首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

nefu117素数定律

2013-10-18 
nefu117素数定理题意:给你一个n,计算1~10^n次方之间有多少个素数,输出该数的位数。思路:素数定理,小于一个

nefu117素数定理

题意:给你一个n,计算1~10^n次方之间有多少个素数,输出该数的位数。

思路:素数定理,小于一个正整数x的素数有多少个,在n越来越大,接近 n / log(n) 计算机用log表示以e为底的对数

所以只要先算出 n / log(n) 在取log 就是位数

n = 10^n

log10( n / log(n) ) = log10(10^n) - log10(log(10^n)) = n - log10(n*log(10)) = n - log10(n) - log10(log(10));

对数运算,相乘等于相加,相除等于想减

#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;int main(){    int n;    while(scanf("%d",&n) != EOF)    {        double m = n - log10(n) -log10(log(10) );        printf("%d\n",int(m) + 1 );    }    return 0;}


热点排行