1059 Prime Factors(25 分)

Given any positive integer N, you are supposed to find all of its prime factors, and write them in the format N = p1​​k1​​​​×p2​​k2​​​​××pm​​km​​​​.

Input Specification:

Each input file contains one test case which gives a positive integer N in the range of long int.

Output Specification:

Factor N in the format = p1​​^k1​​*p2​​^k2​​**pm​​^km​​, where pi​​'s are prime factors of N in increasing order, and the exponent ki​​ is the number of pi​​ -- hence when there is only one pi​​, ki​​ is 1 and must NOT be printed out.

Sample Input:

97532468

Sample Output:

97532468=2^2*11*17*101*1291
复制代码
#include<cstdio>
#include<cmath>
const int maxn = 100010;

bool is_prime(int n){
    if(n == 1) return false;
    int sqr = (int)sqrt(1.0*n);
    for(int i = 2; i <= sqr; i++){
        if(n % i == 0) return false;
    }
    return true;
}

int prime[maxn],pNum = 0;
void Find_prime(){
    for(int i = 1 ; i < maxn; i++){
        if(is_prime(i) == true){
            prime[pNum++] = i;
        }
    }
}

struct facot{
    int x,cnt;
}fac[10];
int main(){
    Find_prime();
    int n;
    scanf("%d",&n);
    int num = 0;
    if(n == 1) printf("1=1");
    else{
        printf("%d=",n);
        int sqr = (int)sqrt(1.0*n);
        //printf("prime[0]");
        for(int i = 0; i < pNum ; i++){
            //printf("%d",i);
            if(n % prime[i] == 0){
                fac[num].x = prime[i];
                fac[num].cnt = 0;
            
            while(n % prime[i] == 0){
                fac[num].cnt++;
                n /= prime[i];
            }
            num++;
        }
        if(n == 1) break;
    }
    if(n != 1){
        fac[num].x = n;
        fac[num].cnt = 1;
    }
    //printf("1\n");
    for(int i = 0; i < num; i++){
        if(i > 0) printf("*");
        printf("%d",fac[i].x);
        if(fac[i].cnt > 1) printf("^%d",fac[i].cnt);
    }
}
    return 0;
}
复制代码

 

posted @   王清河  阅读(768)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示