文章

19

粉丝

225

获赞

20

访问

53.3k

头像
质因数个数
P1156 清华大学上机题
发布于2023年3月21日 15:43
阅读数 2.4k

 注意这几点:

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;
}

 

登录查看完整内容


登录后发布评论

1 条评论
帅就一个字
2024年3月25日 23:20

good

赞(0)