因子和阶乘

来源:互联网 发布:苹果mac激活时间查询 编辑:程序博客网 时间:2024/05/21 15:41

输入正整数n,把n!分解成素因子相乘的形式。从小到大输出素因子的指数,要忽略最大素因子之后的素数的指数

same input

5

same output

5!=3 1 1

具体要求:白书p82



代码如下:

#include<stdio.h>#include<iostream>#include<cmath>#include<cstring>#define LL long longusing namespace std;int  prime[100000]={0};bool vis[100000];void creat_prime(){int i,j,k;int  m;m=sqrt(100000+0.5);memset(vis,0,sizeof(vis));j=0;for(i=2;i<=m;i++){if(vis[i]==false){prime[j++]=i;for(k=i+i;k<=100000;k=k+i)vis[k]=true;}}for(i=m+1;i<=100000;i++){if(vis[i]==false)prime[j++]=i;}}int main(){LL sum;int place[10000]={0};int n;int i,j,k;int cnt;int t;int temp;int position=0;creat_prime();while(scanf("%d",&n)!=EOF){printf("%d!  = ",n);memset(place,0,sizeof(place));int maxposition=0;for(i=1;i<=n;i++){int m=i;for(j=0;j<=100;j++)while(m%prime[j]==0){m/=prime[j];place[j]++;if(j>maxposition)maxposition=j;}}for(i=0;i<=maxposition;i++)printf(" %d",place[i]);printf("\n");}return 0;}