分解因数(1013)和 因子个数(1014 )
https://www.nowcoder.com/pat/2/problem/262 1013 分解因数
https://www.nowcoder.com/pat/2/problem/264 1014 因子个数
思路 :
从i=2开始求余,直至余数不为0,其后从3开始求余......
直至i小于等于被除数n的数值(或n的开平方数值)
&&:利用了素数的知识点(求素数的算法演变)
#include<cstdio>
#include<cmath>
using namespace std;
int main(){
int a;
int ai[100];
while(scanf("%d", &a) != EOF)
{
int b = a;
int j = 0;
for(int i = 2; i <= a; i++)
{
while(b % i == 0)
{
ai[j++] = i;
b = b/i;
}
if(b <= 1)
break;
}
printf("%d = %d", a, ai[0]);
for(int i = 1; i < j; i++)
{
printf(" * %d", ai[i]);
}
printf("\n");
}
return 0;
}
1014
#include<iostream> #include<cmath> using namespace std; int main(){ int a; while(cin >> a) { int b = a; int j = 0; for(int i = 2; i <= sqrt(a); i++) { int flag = 0; while(b % i == 0) { b = b/i; flag = 1; } if(flag) j++; } if(b != 1) j++; cout << j <<endl; } return 0; }