问题分析
如:整数 4,有1, 4, 2 共3个因子。
现在就是输入一个数num,求其因子数。
方法:判断数,如果数不为1,则其因子数起码有两个,(自身和1)
然后从i=2开始到sqrt(num)做循环,如果num%i==0,则因子数+2
当然如果两个因子数相同,是必须要去重的
思路优点
由于循环做的好,没有了类似于24 = 4*6 = 6*4的这种困扰
- 1
代码
#include <iostream>#include <cmath>using namespace std;int num(int n){ //返回的是因子总数 int count=2; for(int i=2;i<=sqrt(n);i++){ if(n%i==0){ if(i==sqrt(n) && n/i==i){ //如果两因子相同,则只加1 count++; } else count+=2; } } return count;}void main(){ int n; cin>>n; if(n==1) cout<<1<<endl; //如果1 else cout<<num(abs(n))<<endl;//负数就把它变成证书考虑,正数不变}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
截图:
表示5的因子数有2个