本文主要是介绍http://acm.nyist.net/JudgeOnline/problem.php?pid=520,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最大素因子
时间限制: 1000 ms | 内存限制: 65535 KB
难度: 2
- 描述
-
i c e最近正在学习数论中的素数,但是现在他遇到了一个难题:给定一个整数n,要求我们求出n的最大素因子的序数,例如:2的序数是1,3的序数是2,5的序数是3,以此类推. 研究数论是需要很大的耐心的,为了惩罚那些没有耐心读完题目的童鞋,我们规定:1的最大素因子序数是0.
- 输入
- 有多组测试数据,每一行输入一个数字n.(0<n<=1000000) 输出
- 在接下来的一行,输出结果. 样例输入
-
1 2 3 4 5
样例输出 -
0 1 2 1 3
#include<iostream> #include<string.h> #include<algorithm> #include<cstdio> #include<cmath> #define N 1000005 using namespace std; int prim[N]={1,1,0}; int a[N]; int b[N]; int tot; void init() { memset(b,0,sizeof(b)); for(int i=2;i<=N/2;++i)for(int j=2*i;j<=N;j+=i){ b[j]=max(i,b[j]);prim[j]=1;}tot=1;for(int i=2;i<=N;++i)if(!prim[i])a[i]=tot++; } int main() {int n;init();while(~scanf("%d",&n)){if(n==1) printf("0\n");else if(n==2) printf("1\n");else{if(!prim[n]) printf("%d\n",a[n]);else printf("%d\n",a[b[n]]);}}return 0; }
这篇关于http://acm.nyist.net/JudgeOnline/problem.php?pid=520的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!