1. 程式人生 > >1137C/C++經典程式訓練7---求某個範圍內的所有素數

1137C/C++經典程式訓練7---求某個範圍內的所有素數

題目描述

求小於n的所有素數,按照每行10個顯示出來。

輸入

輸入整數n(n<10000)。

輸出

每行10個依次輸出n以內的所有素數。如果一行有10個素數,每個素數後面都有一個空格。

示例輸入

100

示例輸出

2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97

#include<stdio.h>

#include<math.h>
void main()
{
int m,k,n,i,count=0;
scanf("%d",&n);
if(n<=10000)
{
for(m=2;m<=n;++m)
{
k=sqrt(m);
     for(i=2;i<=k;i++)
if(m%i==0) break;
   if(i>=k+1)
{
 printf("%d ",m);
     count++;
     if(count%10==0)
 printf("\n");
}
}printf("\n");
}
}

素數篩

#include<stdio.h>
#include<string.h>
int main()
{
    int i, j,m,e;
    int pi = 0;
    int primes[1000],flag[1000];
    memset(flag,0 ,sizeof(flag));
    scanf("%d",&m);
    for (i = 2; i < m; i++)
    {
        if (!flag[i])
            primes[pi++] = i;
        for (j = 0; (j < pi)  && (i * primes[j] < m); j++)
        {
            flag[i * primes[j]] = 1;
            if (i % primes[j] == 0)
                break;
        }
    }
    e=0;
    for(i=0; i<pi; i++)
        {

            printf("%d ",primes[i]);
            e++;
            if(e%10==0)
        printf("\n");
    }

    return 0;
}