nefu 117 素数个数的位数

http://acm.nefu.edu.cn/JudgeOnline/problemshow.php?problem_id=117
素数定理:
随着x的增长,小于正实数x的素数个数与x/lnx的值越来越接近。

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
         cout<<(int)(n-log10(n)-log10(log(10)))+1<<endl;
    }
    return 0;
}
时间: 2025-01-01 01:11:43

nefu 117 素数个数的位数的相关文章

OJ题:计算各个数的位数之和

题目描述: 输入一个大于0的数,要求各个位数的和. 例如: 输入12345 那么输出15 程序如下: #include <stdio.h> int main(int argc, char *argv[]) { int num , sum = 0 ; printf("请输入一个大于0的数:\n"); scanf("%d",&num); while(num != 0) { sum += num % 10 ; num /= 10 ; } printf(

leetcode 204题求素数个数

    Description: Count the number of prime numbers less than a non-negative number, n   提示晒数法: http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes https://primes.utm.edu/howmany.html   别人的代码:   int countPrimes(int n) { if (n<=2) return 0; vector<bool

求解素数几种方法

转贴文章请注明:逸学堂   求解一个算法,我们首先要知道它的数学含义.依据这个原则,首先我们要知道什么是素数.; 素数是这样的整数,它除了表示为它自己和1的乘积以外,无论他表示为任何两个整数的乘积. 找素数的方法多种多样. 1:是从2开始用"是则留下,不是则去掉"的方法把所有的数列出来(一直列到你不想再往下列为止,比方说,一直列到10,000).第一个数是2,它是一个素数,所以应当把它留下来,然后继续往下数,每隔一个数删去一个数,这样就能把所有能被2整除.因而不是素数的数都去掉.在留下

筛法求2~1000之间的所有素数

筛法求素数首先要建立筛子,这里利用数组作筛子.下标对应于数,相应下标变量的值标志是否在筛子中:为1表示在筛子中,为.表示已被筛去,不在筛子中.然后找每一轮筛选种子,筛选种子是完成一轮筛选后的下一个最小的素数,初值为2. 对每一轮筛选种子,筛去其所有倍数,即相应下标变量的值赋值为O.倍数初值为筛选种子的2倍. 筛选完成,筛子中剩下的即为素数. 程序如下: /*程序8-14,筛法求2至1000之间的所有素数*/ main() { int a[1000];/*筛子数组*/ int i; int min

【端午小练】HDU4548-美素数

美素数 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 2132    Accepted Submission(s): 734 Problem Description 小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识. 问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之

poj 2739 Sum of Consecutive Prime Numbers【素数筛】

我觉得这题的数据应该有些刁钻,一共至少提交了五次,一直是WA,无语了......用一个result数组存素数硬是不对.后来就算了,改用直接判断(法二),继续WA,后来发现是MAXN至少应为10002(被数据坑了),终于A掉了...... 后来继续改法一多次,任然WA,一直不清楚原因. 继续思考发现有一个很隐蔽的问题就是我后来用到   if(result[i]>n) break;    而result数组中 10000以内 最后一个素数是 9997,后面全是0了.这样无法停止,所以必须加一个大数作

java-JAVA求101到200的素数并全部输出 求大神看下我的编程错在哪谢谢

问题描述 JAVA求101到200的素数并全部输出 求大神看下我的编程错在哪谢谢 public class SuShu { public static void main(String[] args) { int i = 0; for(int a=101;a<200;a+=2) { for(int b=2;b<a;b++) { if(a%b!=0) { System.out.println(a); i = i + 1; } else { break; } } } System.out.prin

[算法]素数筛法

[方法一] [代码一] [cpp] view plaincopy //判断是否是一个素数   int IsPrime(int a){       //0,1,负数都是非素数       if(a <= 1){           return 0;       }       //计算枚举上界,为防止double值带来的精度损失,所以采用根号值取整后再加1,即宁愿多枚举一个,也不愿少枚举一个数       int bound = (int)sqrt(a) + 1;       for(int i

我的Java开发学习之旅------&amp;gt;求N内所有的素数

一.素数的概念 质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因数:否则称为合数. 根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积:而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的.最小的质数是2 二.算法 算法1.  开根号法:如果一个数(>2),对这个数求平方根,如果这个数能被这个数的平方根到2之间的任何一个(只要有一个