zoukankan      html  css  js  c++  java
  • nefu 117 素数定理

    小明是一个聪明的孩子,对数论有着很浓烈的兴趣。他发现求1到正整数10n 之间有多少个素数是一个很难的问题,该问题的难以决定于n 值的大小。现在的问题是,告诉你n的值,让你帮助小明计算小于10n的素数的个数值共有多少位?

    Input

    输入数据有若干组,每组数据包含1个整数n(1 < n < 1000000000),若遇到EOF则处理结束。

    Output

    对应每组数据,将小于10n 的素数的个数值的位数在一行内输出,格式见样本输出。同组数据的输出,其每个尾数之间空一格,行末没有空格。

    Sample Input

    3
    7
    

    Sample Output

    3
    6

    素数定理: 设小于正实数x的素数的个数记为f(x),那么随着x的增长f(x)/(x/log(x)) = 1;

    推论:令pn是第n个素数,那么pn ~ nlog(n);

    一个数的位数公式:log10(x) + 1;

    #include<map>
    #include<queue>
    #include<stack>
    #include<cmath>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define INF 1000000001
    #define ll __int64
    #define lson l,m,rt<<1
    #define rson m+1,r,rt<<1|1
    using namespace std;
    const int MAXN = 50010;
    int n;
    int main()
    {
        while(cin >>n){
            cout<<(int)(n - log10(n*1.0) - log10(log(10.0))) + 1<<endl;
        }
        return 0;
    }
  • 相关阅读:
    visual studio 2019 企业版下载
    对IT战略的认识
    投融资,你了解吗?
    一品投资农副产品电商平台工作内容
    高明的决策和投资远比低效的勤奋更重要
    随笔
    思维方式的不同
    公司经营问题探讨
    盘点海口最好吃的西餐厅top10
    羽毛球运动技巧
  • 原文地址:https://www.cnblogs.com/sweat123/p/5373016.html
Copyright © 2011-2022 走看看