nyoj520——素数序列

最大素因子

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
 
描述

GreyAnts最近正在学习数论中的素数,但是现在他遇到了一个难题:给定一个整数n,要求我们求出n的最大素因子的序数,例如:2的序数是1,3的序数是2,5的序数是3,以此类推. 研究数论是需要很大的耐心的,为了惩罚那些没有耐心读完题目的童鞋,我们规定:1的最大素因子序数是0.

 
输入
有多组测试数据,每一行输入一个数字n.(0<n<=1000000)
输出
在接下来的一行,输出结果.
样例输入
2
3
4
5
样例输出
1
2
1
3
来源
hdu改编
上传者
ACM_李如兵
#include <bits/stdc++.h>
using namespace std;
typedef long long  ll;
const int INF = 0x3f3f3f3f;
const int maxn = 1000010;
const int moder = 1000000007;

int a[maxn];
int main ()
{
    memset(a,0, sizeof(a));
    int cnt = 0;
    for(int i=2;i < maxn;i++){
        if(a[i] == 0){
            cnt++;
            for(int j = i;j < maxn;j = j+i){
                a[j] = cnt;              //不断覆盖,在标记素数的同时完成了计数
            }
        }
    }
    int n;
    while(~scanf("%d",&n)){
        printf("%d
",a[n]);
    }
    return 0;
}

——AC这辈子都不可AC了,自己写只有暴力吃T,只有看看大神题解才能过下去。

原文地址:https://www.cnblogs.com/cunyusup/p/8495304.html