• n的阶乘分解成素数幂的积


    题目描述:

    题目分析:对于某个阶乘,每个乘积因子总能被一些有小到大的素数除至1,,总体上表现为某个阶乘总能由一些由小到大的素数的幂的积表示。这样我们的目的就到到了

    代码展示:

     1 //阶乘素数分解
     2 #include<stdio.h>
     3 #include<string.h>
     4 int prime[100],p[100];
     5 
     6 int is_prime(int x)
     7 {
     8     int sign=1;
     9     for(int i=2;i*i<x;i++)
    10     {
    11         if(x%i==0)
    12         {
    13             sign=0;
    14             break;
    15         }
    16     }
    17     if(sign) return 1;
    18     else return 0;
    19 }
    20 
    21 int main()
    22 {
    23     int count=0,n;
    24     for(int i=2;i<=100;i++)
    25     {
    26         if(is_prime(i)) prime[count++]=i;
    27     }
    28     while(scanf("%d",&n)==1)
    29     {
    30         int max=0;
    31         memset(p,0,sizeof(p));       //这一步必不可少,不然会出错
    32         printf("%d!=(",n);
    33         for(int i=1;i<=n;i++)        //对于阶乘里出现的每个数,都能被某些从小到的的素数整除,变成1后不再管
    34         {
    35             for(int j=0;j<count;j++)
    36             {
    37                 int m=i;
    38                 while(m%prime[j]==0)
    39                 {
    40                     p[j]++;
    41                     m=m/prime[j];
    42                     if(j>max) max=j;
    43                 }
    44             }
    45         }
    46         for(i=0;i<max;i++) printf(" %d",p[i]);
    47         printf(")
    ");
    48     }
    49     return 0;
    50 }

    运行结果(这里多了括弧):

  • 相关阅读:
    反编译乱码对比
    ABP缓存写法
    AutoMapperHelper
    读取硬盘SN
    wpf用Prism里控件事件绑定mvvm
    ajax请求.net后台接收
    网站博客截取简介
    C# datetime.now.tostring("yyyy/MM/dd") 显示为yyyy-MM-dd的解决办法
    html5远程控制
    SmartThreadPool
  • 原文地址:https://www.cnblogs.com/bboykaku/p/12672150.html
Copyright © 2020-2023  润新知