1. 程式人生 > >素數個數的位數

素數個數的位數

對於這個問題考點有兩個,

1就是判斷1~10^n這個範圍內有多少個素數。

2就是如何判斷位數;

對於第一個問題有一個素數定理   ::對於小於n的數素數個數為n/lnn.

對於第二個問題就是判斷位數有一個公式lg(x) + 1;

所以程式碼如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<set>
#include<map>
#include<queue>
#define pi acos(-1)
#define For(i, a, b) for(int (i) = (a); (i) <= (b); (i) ++)
#define Bor(i, a, b) for(int (i) = (b); (i) >= (a); (i) --)
using namespace std;
typedef long long ll;
const int maxn = 100 + 10;
const int INF = 0x3f3f3f3f;
const double EPS = 1e-10;
const ll mod = 1e9 + 7;
inline int read(){
    int ret=0,f=0;char ch=getchar();
    while(ch>'9'||ch<'0') f^=ch=='-',ch=getchar();
    while(ch<='9'&&ch>='0') ret=ret*10+ch-'0',ch=getchar();
    return f?-ret:ret;
}
int n;
int main(){
    while(cin >> n){
          double m = (n - log10(n)-log10(log(10)));
          cout << int(m) + 1 << endl;
    }
	return 0;
}