筛法求素数

来源:互联网 发布:js判断不等于0 编辑:程序博客网 时间:2024/06/16 08:23

描述:

用筛法求[a,b]中的素数。
Find out the prime numbers in [a, b].

输入:

2个正整数:a b。
a、b均在1000以内,且a小于等于b。
2 positive integers: a, b. Both a and b are less than or equal 1000 and a is less than or equal to b.

输出:

[a b]区间内的所有素数,每个单独一行。
All primes in [a, b], each one in a row.

输入样例:

2 5

输出样例:

235

#include <iostream>#include <math.h>
using namespace std;int isprime(int m){    int i; for(i=2;i<=sqrt(m);i++)    {        if(!(m%i))            return 0;    } return 1;}
int main(){    /*    2个正整数:a b。    a、b均在1000以内,且a小于等于b。
    [a b]区间内的所有素数,每个单独一行。    */    int A[1000];    int a, b;    int i, j, k;    cin >> a;    cin >> b;    for(i = a; i <= b; i ++)    {        A[i] = 1;    }    for(i = a; i <= b; i ++)    {        if(i == 1)            continue;        else        {            if(isprime(i))            {                for(j = i + 1; j <= b; j ++)                {                    if(j % i == 0)                        A[j] = 0;                }            }            else            {                for(j = i; j <= b; j ++)                {                    if(j % i == 0)                        A[j] = 0;                }            }        }    }    for(k = a; k <= b; k ++)    {        if(k == 1)            continue;        else        {            if(A[k] == 1)                cout << k << endl;        }    }    return 0;}

原创粉丝点击