NEFU 117 素数个数的位数


定义:Π(x)为 1 到 x的素数个数。

素数定理:随着x的增长,Π(x)/(x/ln(x))= 1

推论:令pn是第n个素数,其中n是正整数,那么pn~n ln n


题意:求小于10的n次方的素数的个数共有多少位,n < 1e9

题解:这道题的数据量很大,因为10的n次方很大,会溢出,不能直接运算,该题只是求素数分布值的位数,考虑到使用素数定理,因为n/ln n 与素数分布值Π (n)随着n的增大越来越近,值的位数更不会出现误差,所以求n/ln n的位数即可。根据位数公式,得知【ln(n/ln n)】+ 1就是该问题的解。


代码如下

#include<cstdlib>
#include<iostream>
#include<cmath>
using namespace std;
int main(){
	int out;
	double n,m;
//	double e = 2.71828;
	while(cin >> n){
		m = double (n - log10(n) - log10(log(10)));
		cout << int(m) + 1 << endl;
	}
} 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值