zoukankan      html  css  js  c++  java
  • 数论,质因数分解

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88159#problem/J

    题意:

           多组案例,以输入一个负数结束。每组案例给出一个数n,将其质因数分解。例如下述案例中 60=2^2*3^1*5^1 。
    案例:

           Sample Input

           60

           12

           -1

           Sample Output

           Case 1.

           2 2 3 1 5 1

        

           Case 2.
           2 2 3 1

    分析:

           该题与之前发布的判断美素数类似,稍作修改即可。不过这题需要注意其输入输出格式,因为格式问题,我提交错误了3次。

    源代码:

     1 #include<cstdio>
     2 #include<cmath>
     3 #include<cstring>
     4 int n,k;
     5 int prime[65540],a[65540];
     6 void judge_prime()
     7 {
     8     int s,t,m;
     9     m=int(sqrt(65540));
    10     prime[0]=prime[1]=1;
    11     for(s=2;s<=m;s++)
    12         if(!prime[s])
    13             for(t=s*s;t<=65540;t+=s)
    14                 prime[t]=1;
    15 }
    16 void search()
    17 {
    18     int cnt;
    19     k=1;
    20     for(int i=2;i<=n;i++)
    21     {
    22         if(!prime[i])
    23             if(n%i==0)
    24             {
    25                 a[k]=i;
    26                 cnt=1;
    27                 n=n/i;
    28                 while(n%i==0)
    29                 {
    30                     ++cnt;
    31                     n=n/i;
    32                 }
    33                 a[++k]=cnt;
    34                 k++;
    35             }
    36     }
    37 }
    38 int main()
    39 {
    40     int ans=0;
    41     memset(prime,0,sizeof(prime));
    42     judge_prime();
    43     while(scanf("%d",&n)&&n>0)
    44     {
    45         if(ans) printf("
    ");//注意!there is a blank line between outputs. 
    46         memset(a,0,sizeof(a));
    47         search();
    48         printf("Case %d.
    ",++ans);
    49         for(int j=1;j<k;j++)
    50             printf("%d ",a[j]);//每个数字后都有一个空格,包括最后一个数字
    51         printf("
    ");
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    两个list,并集、交集、差集
    关于apt-get install
    异步进程池
    获取cpu信息
    print重定向
    使用pandas操作excel
    排列组合,取所有可能性
    list_反转,切片,删除,升序降序
    抠图
    enumerate()函数的用法
  • 原文地址:https://www.cnblogs.com/huaszjh/p/4738796.html
Copyright © 2011-2022 走看看