zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    Linux环境下使用eclipse开发C++动态链接库程序
    例解 autoconf 和 automake 生成 Makefile 文件
    linux下编译boost
    在linux下如何编译C++程序
    windows和linux套接字中的select机制浅析
    看到关于socket非阻塞模式设置方式记录一下。
    MySQL批量执行sql文件
    Sqlcmd使用详解
    批量执行SQL文件
    SpringCloud微服务之跨服务调用后端接口
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/9532827.html
Copyright © 2011-2022 走看看