素數個數的位數
阿新 • • 發佈:2018-12-12
對於這個問題考點有兩個,
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; }