70pts求助
查看原帖
70pts求助
1025496
封禁用户楼主2023/7/7 11:14
#include<bits/stdc++.h>
using namespace std;
string str;
long long sum=0;
void get_sum(){
	for(int i=0;i<str.length();i++){
		if(str[i]>='0' && str[i]<='9'){
			sum=sum*10+(str[i]-'0');
		}
	}
}
bool is_prime(long long sum){
	if(sum<2) return 0;
	else{
		for(int i=2;i<=sum/i;i++){
			if(sum%i==0) return 0; 
		}
	}
	return 1;
}
void un_prime(long long x){
	bool flag=0;
	printf("%d=",x);
    for(int i=2;i<=x/i;i++){
        if(x%i==0){
            int s=0;
            while(x%i==0) x/=i,s++;
            if(flag) cout<<"*"<<i<<"^"<<s;
            else cout<<i<<"^"<<s,flag++;
        }
    }
    if(x>1) cout<<"*"<<x<<"^"<<1<<endl;
    printf("\n");
}
int main(){
	while(true){
		printf("Enter the number=\n");
		getline(cin,str);
		sum=0;
		get_sum();
		if(sum==0) return 0;
		
		printf("Prime? ");
		
		bool st=is_prime(sum);
		
		if(st) printf("Yes!\n");
		else printf("No!\n");
		if(sum>=40000000) printf("The number is too large!\n\n");
	    else if(!st && sum>=2) un_prime(sum);
	    else printf("\n");
		
	}
}
2023/7/7 11:14
加载中...