zoukankan      html  css  js  c++  java
  • 因子和阶乘

      算法竞赛入门 P82 5.4.2 

    题目大意: 输入正整数n , 把n! =1*2*3*……*n 分解乘素因子相乘形式,并从大到小输出各个素数的指数。

    样例输入:

    5

    53

    样例输出:

    5!= 3 1 1

    53! = 49 23 12 8 4 4 3 2 2 1 1 1 1 1 1 1 

     1 /*
     2 算法竞赛入门经典 P82 5.4.2
     3 因子和阶乘
     4 
     5 */
     6 
     7 #include <cstdio>
     8 #include <memory.h>
     9 
    10 //判断是否为素数
    11 int is_prime(int n)
    12 {
    13     for(int i=2;i*i<=n;i++)
    14     {
    15         if(n%i == 0)
    16         {
    17             return 0;
    18         }
    19 
    20     }
    21     return 1;
    22 }
    23 
    24 
    25 
    26 const int MAXN = 100;
    27 int prime[MAXN];  // 素数表
    28 
    29 int n,p[MAXN];  // p 是各个素数的指数
    30 int count=0;
    31 int main()
    32 {
    33     for(int i=2;i<=MAXN;i++)
    34     {
    35         if(is_prime(i))
    36         {
    37             prime[count++]=i;
    38         }
    39     }
    40 
    41     while(scanf("%d",&n)==1)
    42     {
    43         printf("%d = ",n);
    44         memset(p,0,sizeof(p));
    45         int maxp=0;
    46         for(int i=1;i<=n;i++)           //阶乘
    47         {
    48             int m=i;
    49             for(int j=0;j<count;j++)
    50             {
    51                 while(m%prime[j] == 0)
    52                 {
    53                     m/=prime[j];
    54                     p[j]++;
    55                     if(j>maxp)maxp=j;
    56                 }
    57             }
    58 
    59         }
    60         for(int i=0;i<=maxp;i++)
    61         {
    62             printf("%d ", p[i]);
    63         }
    64         printf("
    ");
    65 
    66     }
    67 
    68 
    69 
    70     return 0;
    71 }
  • 相关阅读:
    Java基础其他
    java网络编程
    java多线程编程
    正则表达式--位置匹配和组
    设计模式
    深入 Java Web
    mysql 好用的sql语句
    spring boot 发送邮件
    dubbo的spi机制
    原理分析dubbo分布式应用中使用zipkin做链路追踪
  • 原文地址:https://www.cnblogs.com/doubleshik/p/3357808.html
Copyright © 2011-2022 走看看