文章
19
粉丝
225
获赞
20
访问
51.6k
注意这几点:
1.判断质数判断到sqrt就行,这样可以节省一半时间;
2.为了解决有多个重复因数的情况,每次都让i=2.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main() {
int n;
while (scanf("%d", &n) != EOF) {
int i = 2;
int step = 0;
while (n > 1) {
if (n % i == 0) {
step++;
n = n / i;
i = 2;
}
else
i++;
if (i > sqrt(n))
break;
}
//一开始一直想不通为什么会有这一步,主要是当i已经大于sqrt(n)时,
//后面就只会有一个质素,那就是最后一个n值本身
if (n > 1)
step++;
printf("%d\n", step);
}
return 0;
}
登录后发布评论
good