文章

49

粉丝

140

获赞

27

访问

16.4k

头像
质因数个数 题解:易错点:超时
P1156 清华大学上机题
发布于2024年1月25日 23:23
阅读数 391

#include <iostream>
#include <math.h>
using namespace std;
int cc(long long int  c){
	int index=1;
	//double c1=c;
	for(int i=2;i<=sqrt(c*1.0);i++)
	{
		if(c%i==0){
			index=0;
			break;
		}
	}
if(index==0)
return 0;
else
	return 1;
}
int main(){
	long long  int a=0;
	long long  int count=0;
	while(cin >> a){
		count=0;
		while(a){
				if(cc(a)==1){

				count++;
				break;
			}
			for(int i=2;i<a;i++){
				if(cc(i)==0)
					continue;
				else{
					if(a%i==0){
						a=a/i;	
						count++;
						//cout << count << a<< endl;
					
						break;
					}
					else {

						continue;
					}
				}	
		}
		
	}
cout << count << endl;
	}
	
	system("pause");
	return 0;

}

两个地方  

1.判断是否为素数的函数一定要用sqrt

2.主函数中每一次循环都要判断是否为素数

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发