zoukankan      html  css  js  c++  java
  • 1059 Prime Factors (25 分)

    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

    素数筛,可能也有点超纲。。。
    但是也不难。

     1 #include <bits/stdc++.h>
     2 #define mod 2000005
     3 #define ll long long
     4 using namespace std;
     5 int an[mod], prime[mod];
     6 vector<int> v,vt;
     7 int pos = 0;
     8 void init(){
     9     an[0] = an[1] = 1;
    10     for(int i=2; i < mod; i++){
    11         if(an[i] == 0){
    12             prime[pos++] = i;
    13             for(int j = 2; j*i < mod; j++)
    14                 an[i*j] = 1;
    15         }
    16     }
    17 }
    18 
    19 ll n;
    20 
    21 int main(){
    22     init();
    23 
    24     cin >> n;
    25     if(n == 1){
    26         cout <<n<<"="<<n<<endl;
    27         return 0;
    28     }
    29     cout <<n<<"=";
    30     for(int i = 0; i < pos; i++){
    31         if(n%prime[i] == 0){
    32             int count = 0;
    33             while(n%prime[i] == 0){
    34                 n /= prime[i];
    35                 count++;
    36                 if(n == 0)
    37                     break;
    38             }
    39             v.push_back(prime[i]);
    40             vt.push_back(count);
    41         }
    42         if(n == 1){
    43             break;
    44         }
    45     }
    46     for(int i = 0; i < v.size(); i++){
    47         if(vt[i] == 1){
    48             cout << v[i];
    49         }else{
    50             cout << v[i] <<"^"<<vt[i];
    51         }
    52         printf("%c",i == v.size()-1?'
    ':'*');
    53     }
    54 
    55     return 0;
    56 }



  • 相关阅读:
    虚拟机CentOS 7 网络连接显示"线缆被拔出"
    sqlplus下删除退格,出现^H^H
    “服务器发送了一个意外的数据包。received:3,expected:20“问题的解决方法
    Oracle 12c创建PDB用户并设置默认表空间
    今日进度
    今日进度
    给王老师的建议
    今日进度
    今日进度
    每周总结
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/11190910.html
Copyright © 2011-2022 走看看