CPRIME - Prime Number Theorem

Tác giả: flashmt

Ngôn ngữ: C++

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <bitset>
#include <cmath>
using namespace std;

bitset<100000100> d;
int p[6000000],P;

int main()
{
	for (int i=2;i*i<100000000;i++)
		if (!d[i])
			for (int j=i*i;j<100000000;j+=i)
				d[j]=1;
	for (int i=2;i<100000000;i++)
		if (!d[i])
			p[P++]=i;
			
	int n;
	while (scanf("%d",&n), n)
	{
		int num=upper_bound(p,p+P,n)-p;
		printf("%.1lf\n",100.0*fabs(num-n/log(n))/num);
	}
}

Download