素数个数的位数

来源:互联网 发布:中国大数据研究中心 编辑:程序博客网 时间:2024/05/20 18:43
description

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

input

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


output

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


sample_input

3
7


sample_output

3

6

/*

   题解:素数有无穷多个,能估计出小于一个正实数X的素数有多少个,并用F(x)表示, 随着X的增长,

               F(x)  /  ( X / ln(x) ) = 1;  值的位数不会出现误差,所以直接求( 10^n / ln(10^n) ) 的位数即可。

               根据位数公式:lg( ( 10^n / ln(10^n) ) ) + 1  就是题中的解。

*/

//标程:

#include<iostream>#include<cstdio>#include<cmath>using namespace std;const double e = 2.71828;int main(){// freopen("a.txt","r",stdin);    int n;while(cin >> n){double  m = (double)(n - log10(n) - log10( log(10) ) );cout << (int)(m) + 1 << endl;}return 0;}


0 0