1013. 数素数 (20)

令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数。

输入格式:

输入在一行中给出M和N,其间以空格分隔。

输出格式:

输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。

输入样例:

5 27

输出样例:

11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103

M,N分别代表第M,N个素数。

#include<stdio.h>
#include<math.h>
int judge(int x){
    int i;
    for(i = 2;i <= sqrt(x);i++)
        if(x%i == 0) 
            return 0;
    return 1;
}
int main(){
    int M,N;
    int p[10010] = {0};
    int i=2,j = 1,count = 0;
    scanf("%d%d",&M,&N);
    while(j<=N){      //从2开始,将素数存到p【1】为首的数组中
        if(judge(i)) p[j++] = i;
        i++;
    }
    
    for(j = M;j <= N;j++){
        count++;
        if(count % 10 == 1)printf("%d",p[j]);
        else printf(" %d",p[j]);
        if(count % 10 == 0)printf("\n");
    }
    return 0;
}

 

#include<cstdio>
const int maxn = 1000001;
int prime[maxn],num = 0;
bool p[maxn] = {0};
void Find_prime(int n){
    for(int i = 2; i < maxn; i++){
        if(p[i] == false){
            prime[num++] = i;
            if(num >= n) break;
            for(int j = i+i; j < maxn; j += i){
                p[j] = true;
            }
        }
    }
} 
int main(){
    int m,n,count = 0;
    scanf("%d%d",&m,&n);
    Find_prime(n);
    for(int i = m; i <= n; i++){
        printf("%d",prime[i-1]);
        count++;
        if(count % 10 != 0 && i < n) printf(" ");
        else printf("\n");
    }
    return 0;
}

 

posted @ 2018-02-02 13:04  王清河  阅读(132)  评论(0编辑  收藏  举报