80分求助
查看原帖
80分求助
1188089
haokai_luo楼主2024/10/13 10:36
#include<bits/stdc++.h>
using namespace std;
string s;
bool iszhi(long long x){
	if(x<2||x!=2&&x%2==0)return false;
	for(int i=3;i*i<=x;i+=2){
		if(x%i==0)return false;
	}
	return true;
}
int main(){
	while(getline(cin,s)){
		cout<<"Enter the number="<<endl;
		long long cnt=0;
		bool flag=false;
		for(long long i=0;i<s.size()&&cnt<=40000000;i++){
			if(s[i]>='0'&&s[i]<='9')cnt=cnt*10+(s[i]-'0'),flag=true;
		}
		if(flag==false)continue;
		cout<<"Prime? ";
		if(iszhi(cnt)==true&&cnt<=40000000){
			cout<<"Yes!"<<endl<<endl;
			continue;
		}else cout<<"No!"<<endl;
		if(cnt<2){
			cout<<endl;
			continue;
		}
		if(cnt>40000000){
			cout<<"The number is too large!"<<endl<<endl;
			continue;
		}
		cout<<cnt<<'=';
		flag=0;
		for(long long i=2;i*i<=cnt;i++){
			long long sum=0;
			while(cnt%i==0){
				cnt/=i;
				sum++;
			}
			if(sum){
				if(flag){
					cout<<'*'<<i<<'^'<<sum;
					sum=0;
				}else{
					cout<<i<<'^'<<sum;
					flag=1;
					sum=0;
				}
			}
		}
		if(iszhi(cnt))cout<<'*'<<cnt<<"^1"<<endl<<endl;
		else cout<<endl<<endl;
	}
	return 0;
}
2024/10/13 10:36
加载中...