zoukankan      html  css  js  c++  java
  • 【数学】【AOJ-7】Redraiment猜想

    Description
    redraiment在家极度无聊,于是找了张纸开始统计素数的个数。
    设函数f(n)返回从1->n之间素数的个数。
    redraiment发现:

    f(1) = 0
    f(10) = 4
    f(100) = 25
    ...

    满足g(m) = 17 * m2 / 3 - 22 * m / 3 + 5 / 3
    其中m为n的位数。
    他很激动,是不是自己发现了素数分布的规律了!
    请你设计一个程序,求出1->n范围内素数的个数,来验证redraiment是不是正确的,也许还可以得诺贝尔奖呢。^_^
    Input
    输入包括多组数据。
    每组数据仅有一个整数n (1≤n≤10,000,000)。
    输入以0结束

    Output
    对于每组数据输入,输出一行,为1->n(包括n)之间的素数的个数
    Sample Input
    1
    10
    65
    100
    0
    

     
    Sample Output
    0
    4
    18
    25
    
    思路:
    筛选法求素数 上面题干全废话...

    参考代码:
    #include<stdio.h>
    #include<math.h>
    int a[10000007];
    int main()
    {
        int i,j,sum,n;
        a[1]=0;
        a[2]=1;
        while(scanf("%d",&n)!=EOF&&n)
        {
            if(n==1)
            {
                printf("0
    ");
                continue;
            }
            else if(n==2)
            {
                printf("1
    ");
                continue;
            }
            sum=1;
            for(i=3;i<=n;i+=2)//i+=2配上a[i]直接忽略偶数
            {
                for(j=3;j<=i&&i*j<=n;j+=2)
                    a[i*j]=1;//因为可以分解成i*j说明肯定不是素数 排除
                if(a[i]!=1) 
                    sum++;
            }
            printf("%d
    ",sum);
        }
        return 0;
    }
    
    
  • 相关阅读:
    词云
    结巴分词
    重复值处理
    异常值判断
    MySQL基本使用
    缺失值处理
    fit_transform和transform的区别
    sklearn学习笔记之简单线性回归
    图解机器学习
    Unity---UNet学习(1)----基本方法介绍
  • 原文地址:https://www.cnblogs.com/ahu-shu/p/3468374.html
Copyright © 2011-2022 走看看