• 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
    ");
        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;
    }
  • 相关阅读:
    Java学习之--List和ArrayList
    Linux
    Linux
    Docker 容器管理
    Docker 镜像管理
    如何理解 AWS VPC
    Linux 内核版本
    Windows 快速切换到当前目录下的dos环境
    Git 整理
    TCP/IP
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/9532827.html
Copyright © 2020-2023  润新知