问题链接:。
时间限制: 1000 ms 空间限制: 262144 KB
题目描述
对于任意给定的一个正整数,计算其因数个数。 输入样例: 6 输出样例: 4 说明: 1、2、3、6都是6的因数。因此,输出4。
输入
输入正整数N。
输出
输出N的因子个数。
样例输入
6
样例输出
4
数据范围限制
1<=N<2^31
提示
1、2、3、6都是6的因数。因此,输出4。
问题分析
用穷举法进行计算,尽量减少穷举的次数。
若a*b=n且a<b,则a和b都是n的因子,所以只需要用1到sqrt(n)进行试探即可。同时需要注意,若a*a=n则a为n的因子(只计数1次);若a*b=n且a!=b则需要计数2次。
程序说明
(略)
要点详解- 没有找到好方法就只好用穷举法。
- 像计算平方根这样的计算,要尽量少计算。
100分通过的程序:
#include#include int main(void){ int n, end, count, i; scanf("%d", &n); count = 0; end = sqrt(n); for(i=1; i<=end; i++) if(n % i == 0) count += 2; if(end * end == n) count -= 1; printf("%d\n", count); return 0;}