nefu 117素数个数的位数(位数问题)

来源:互联网 发布:ubuntu软件在哪下 编辑:程序博客网 时间:2024/05/23 17:40
小明是一个聪明的孩子,对数论有着很浓烈的兴趣。
他发现求1到正整数10n 之间有多少个素数是一个很难的问题,该问题的难以决定于n 值的大小。
现在的问题是,告诉你n的值,让你帮助小明计算小于10n的素数的个数值共有多少位?

Input

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

Output

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

Sample Input

37

Sample Output

36

Hint

素数定理

分析总结:
<span style="font-size:14px;">首先呢要好好读题,要求的是什么!!!真的要好好读题!其次要求掌握素数定理:定义p(x)是小于x的素数的个数有多少,然后有p(x)/(x/lnx)=1,x越大越趋近于1,然后就是位数问题@@@@,这个问题以前搞过啊要求x的位数就是(int)logx+1呀</span>
<span style="font-size:14px;"></span>
////  main.cpp//  nefu 117 素数个数的位数////  Created by 张嘉韬 on 16/7/25.//  Copyright © 2016年 张嘉韬. All rights reserved.//#include <iostream>#include <cstring>#include <cstdio>#include <cmath>using namespace std;const double e=2.718281828459;int main(int argc, const char * argv[]) {    int n;    while(scanf("%d",&n)!=EOF)    {        double temp=n/log10(e);        temp=log10(temp);        temp=n-temp;        int r=temp;        r=r+1;        cout<<r<<endl;    }    return 0;}
<br /><br />

0 0
原创粉丝点击