• SDNU1522.陆历川学数学


    Description

    陆历川很热爱数学,最近他学了质数,他被质数深深的吸引,但是陆历川有个习惯,他喜欢给一些东西编号,所以他决定给所有的质数编号,例如给2编号1,3编号2,5编号3.....这样2,3,5就是质数里面的大当家,二当家和三当家了,陆历川现在知道了这些编号,现在他会给你一个数,他想知道这个数的所有的质因子里面的最大编号是多少?

    注:0和1的编号都是0;

    Input

    一个自然数N(0<=N<=1000000)

    多组输入样例

    Output

    最大编号

    Sample Input

    1

    2

    3

    4

    5

    Sample Output

    0

    1

    2

    1

    3

    这道题要用到埃氏筛,前面我发表过埃氏筛的模板,但是不能生搬硬套,因为此处的要求不一样。

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    using namespace std;
    #define ll long long
    #define maxn 1000000+8
    ll tot,pri[maxn],s[maxn];
    bool is[maxn];
    void Eratosthenes()
    {
        tot=0;
        memset(is,1,sizeof(is));//定义is数组中所有数都为1;即假设所有数都为素数,方便后面筛出素数
        is[0]=is[1]=0;//数字0和1的素数都为0
        for(int i=2;i<maxn;i++)
        {
            if(is[i])//如果是素数的话,is[]肯定为1
            {
                pri[++tot]=i;//将素数存入pri数组中
                s[i]=tot;//储存编号
                for(ll j=i+i;i<maxn;j+=i)//筛出不是素数的数
                {
                    is[j]=0;
                    s[j]=tot;
                }
            }
        }
    }
    int main()
    {
        ll n;
        Eratosthenes()//埃氏筛在此处已经把从0到maxn的素数都筛选出来了,节省了程序运行的时间
        while(~scanf("%lld",&n))
        {
            printf("%lld
    ",s[n]);
        }
        return 0;
    }
  • 相关阅读:
    vi/vim 文字处理器常用命令
    图片在容器里水平垂直居中
    谁的属性值优先被访问
    创建对象和实例
    碎碎念css
    未整理js
    表格<table>
    盒子模型
    Css文件目录结构
    链接文字<a>保持原有的字体颜色
  • 原文地址:https://www.cnblogs.com/RootVount/p/10022562.html
Copyright © 2020-2023  润新知