codevs 2945 计算素数

题目描述 Description

计算[A,B](区间包括A和B,2<=A<=B<=18000000)之间,一共有多少素数?

输入描述 Input Description

一行两个数A和B

输出描述 Output Description

一个数,表示素数的个数

样例输入 Sample Input

3 10

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint

2<=A<=B<=18000000

思路:

素数筛+枚举

代码:

#include<cstdio>
using namespace std;
int l,r,ans;
bool a[18000001];
void shai()
{
    for(int i=2;i<=18000000;i++)
      if(a[i]==0)
        for(int j=i*2;j<=18000000;j+=i)
          a[j]=1;
}
int main()
{
    shai();
    scanf("%d%d",&l,&r);
    for(int i=l;i<=r;i++)
      if(a[i]==0)
        ans++;
    printf("%d",ans);
    return 0;
}
时间: 2024-10-24 11:07:52

codevs 2945 计算素数的相关文章

计算素数

题目1:计算0-100的所有的素数. 素数:素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数. 很容易得出下面的代码 def get_prime(n): res = [] for i in range(2, n): for j in range(2, i): if i % j == 0: break else: res.append(i) return res 求素数 但是经过分析,我们发现完全可以利用已知的信息,如果一个数不是素数,那么它的所有整数倍也肯定不是素数,因此,我

计算素数的另一种方法

1 <?php 2 define("NUMBER", 1000); 3 $times = 0; 4 for ($i=2; $i < NUMBER; $i++) { 5 $prime[$i] = 1;//假设全为素数 6 7 if ($i%2==0&&$i!=2) { 8 $prime[$i] = 0;//合数 9 continute; 10 } 11 if ($i%3 == 0&&$i!=3) { 12 $prime[$i] = 0; 13

计算素数。

素数:能被1和它本身整除的数.根据它的定义,可知素数不能被其他数整除,那么从1开始循环到它本身,判断取模是否为0.考虑乘法本身的特点,最大可以是的平方根.所以代码如下: /// <summary>        /// 素数,平方根以内数全部不能整除,则是素数.        /// </summary>        public static void TestNewYear2()        { StringBuilder sb = new StringBuilder();

codevs 1137 计算系数

传送门 1137 计算系数 2011年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 给定一个多项式(ax + by)^k,请求出多项式展开后x^n y^m项的系数. 输入描述 Input Description 共一行,包含 5 个整数,分别为a,b,k,n,m,每两个整数之间用一个空格隔开. 输出描述 Output Description 输出共 1 行,包含一个整数,表示所求的系

codevs 2964公共素数因数

2964 公共素数因数 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 小单同学刚学习了一个数分解成几个素数(也叫质数)因子相乘的知识. 例如:12=2*2*3:25=5*5:144=2*2*2*2*3*3······等,比如,第一个表达式,说明12这个整数可以分解出2.2.3这三个质数因子.老师给他布置了一个作业,小单看来看去,怎么都不会做,只好虚心求教各位同学(他自己睡觉去了!) 问题是这样的:已知两个正整数a,b:

codevs:2849 素数判定 3:输入一个正整数x(3&lt;=x&lt;=100000),判断x是否是质数,如果是质数则输出信息“prime”,否则输出“composite”。

#include<iostream>#include<cstdio>#include<cmath>using namespace std;int a[2];int main(){ int p,b=0,flag=1; scanf("%d",&p); for(int i=2;i<=p/2;i++) { if(p%i==0) { printf("composite"); return 0; } } printf("

codevs:1462 素数和:给定2个整数a,b 求出它们之间(不含a,b)所有质数的和。

#include<iostream>#include<cstdio>#include<cmath>using namespace std;int main(){ int flag=0,a,b,tot=0; scanf("%d%d",&a,&b); if(a>b)swap(a,b); for(int i=a+1;i<b;++i) { flag=1; for(int j=2;j<=sqrt(i);++j) { if(i%

HDU2136_Largest prime factor【水题】【筛法求素数】

Largest prime factor Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7216    Accepted Submission(s): 2559 Problem Description Everybody knows any number can be combined by the prime number. Now

用算法求N(N&gt;=3)之内素数的个数

首先,我们谈一下素数的定义,什么是素数?除了1和它本身外,不能被其他自然数整除(除0以外)的数 称之为素数(质数):否则称为合数. 根据素数的定义,在解决这个问题上,一开始我想到的方法是从3到N之间每个奇数进行遍历,然后再按照素数的定义去逐个除以3到 根号N之间的奇数,就可以计算素数的个数了. 于是便编写了下面的代码: (代码是用C++编写的) #include<iostream> #include <time.h> using namespace std; #define N 1