HDU 2136

来源:互联网 发布:网络通信运营商 编辑:程序博客网 时间:2024/05/16 17:18

题意:求某个数的最大质因子是第几个质数

思路:用筛法打个带标记的质数表即可

代码:

#include<iostream>#include<cstdio>#include<cstdlib>#include<string>#include<iomanip>#include<cmath>#include<cstring>#include<algorithm>#include<stack>#include<queue>#include<vector>#include<set>#include<map>using namespace std;const int MAXN = 1000000;int str[MAXN + 10], prime[MAXN];int Max(int a, int b){return a>b ? a : b;}void init(){memset(str, 0, sizeof str);int cnt = 1;str[0] = 0;str[1] = 0;for (int i = 2; i <= MAXN; i++){if (str[i] == 0){str[i] = cnt;prime[cnt++] = i;}for (int j = 1; j < cnt && i * prime[j] <= MAXN; j++){str[i * prime[j]] = Max(j, str[i]);if (i % prime[j] == 0){break;}}}}int main(){init();int n;while (~scanf("%d", &n)){printf("%d\n", str[n]);}return 0;}


0 0
原创粉丝点击