标签:des style class blog c code
1 2 3 4 5
0 1 2 1 3题意:求一个数的最简因式中最大素数因子在所有的素数中位置,位置从0开始。分析:所有的数都可以用素数的倍数来表示,原因:数分为两类:素数和非素数。非素数那么一定可以分解得到最简因式,素数不能分解,其最简因式是本身。综上所述:一个数的最简因式中因子一定全是素数。方法一:#include<stdio.h> int prim[1000005]={0}; void init() { int k; prim[1]=0; k=1; for(int i=2;i<1000000;i++) if(prim[i]==0)//i是素数 { for(int j=i; j<1000000; j+=i) prim[j]=k; k++; } } int main() { int n; init(); while(scanf("%d",&n)>0) printf("%d\n",prim[n]); }方法二:#include<stdio.h> int vist[1000005]={0},prim[1000005]; void init() { int k; prim[1]=1; prim[2]=2;k=3; for(int i=3;i<1000000;i+=2) if(vist[i]==0) { prim[i]=k; k++; for(int j=i; j<1000000; j+=i) if(vist[j]==0) vist[j]=1; } } int main() { int n,posit; init(); while(scanf("%d",&n)>0) { posit=1; for(int i=2; ; i++) if(prim[n]==0) { if(prim[i]&&n%i==0)posit=i; while(n%i==0)n/=i; } else { if(n>posit)posit=n; break; } printf("%d\n",prim[posit]-1); } }
hdu2136Largest prime factor (关建在求素数,有点意思的题),布布扣,bubuko.com
hdu2136Largest prime factor (关建在求素数,有点意思的题)
标签:des style class blog c code
原文地址:http://blog.csdn.net/u010372095/article/details/26624367