P1619 70pts 求助
  • 板块题目总版
  • 楼主封禁用户
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/7/7 11:28
  • 上次更新2023/11/3 11:13:28
查看原帖
P1619 70pts 求助
1025496
封禁用户楼主2023/7/7 11:28
#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:28
加载中...