CCF OJ 1024 因子個數
阿新 • • 發佈:2018-12-23
題目
對於任意給定的一個正整數,計算其因數個數。
輸入樣例:
6
輸出樣例:
4
說明:
1、2、3、6都是6的因數。因此,輸出4。
輸入輸出:
輸入正整數N。6
輸出N的因子個數。4
資料範圍限制:
1<=N<2^31
分析:
因為資料範圍比較大,所以要考慮到時間複雜度的問題,如果使用1-N或1-N/2去列舉的話,很容易超時。因此,我們要取平方根sqrt(N),避免後面的數重複計算。計算的規則是:n%i==0 && n/i !=i ,則給flag +2;如果n%i==0 && n/i ==i,則給flag+1,意思就是當n = i * i時,只算一個。
程式:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n,flag=0;
cin >> n;
for(int i = 1; i<=sqrt(n); i++)
{
if(n%i==0 && n/i !=i)
flag+=2;
if(n%i==0 && n/i == i)
flag++;
}
cout << flag<< endl;
return 0;
}