筛选法求素数输入一个整数n

7-3 筛选法求素数
输入一个整数n,求n以内的素数。素数指的是除了1和它本身没有其他因子的整数;最小的素数是2,其余的素数都是奇数;素数序列为:2 3 5 7 11 13 17 19……

输入格式:
测试数据有多组,处理到文件尾。对于每组测试,输入一个整数n(1

输出格式:
对于每组测试,输出n以内的素数。每两个素数之间留一个空格。

输入样例:
19
输出样例:
2 3 5 7 11 13 17 19

#include<stdio.h>
int main()
{
    int n;
    bool prime[1000];
    for(int i=0;i<1000;i++)
    {
        prime[i]=0;
    }
    scanf("%d",&n);
    for(int i=2;i<=n;i++)
    {
        if(prime[i]==0)
        {
            for(int j=i*2;j<=n;j=j+i)
            {
                prime[j]=1;
            }
        }
    } 
    for(int i=2;i<=n;i++)
    {
        if(prime[i]==0)printf("%d ",i);
    }
}



#include <stdio.h>
#include <math.h>
/*输入一个整数n,求n以内的素数。素数指的是除了1和它本身没有其他因子的整数;最小的素数是2,其余的素数都是奇数;素数序列为:2 3 5 7 11 13 17 19……

输入格式:
测试数据有多组,处理到文件尾。对于每组测试,输入一个整数n(1<n<2000)。

输出格式:
对于每组测试,输出n以内的素数。每两个素数之间留一个空格。

输入样例:
19
输出样例:
2 3 5 7 11 13 17 19*/
int prime(int m);
int main(void){
 int i,n;
 
     printf("Enter n:");
     scanf("%d",&n);
     for(i=2;i<=n;i++){
         if(prime(i)==1){
             printf("%d ",i);
         }
     }

} 
//判断素数的函数
int prime(int m){
    int i,limit;
    if(m<=1){/*小于等于1的数不是素数*/
        return 0;
    }else if(m==2){/*2是素数*/
        return 1;
    }else{/*其他情况:大于2的整数*/
        limit=sqrt(m)+1;
        for(i=2;i<=limit;i++){/*若m能被某个i整除,则m不是素数,返回0*/
            if(m%i==0){
                return 0;
            }
        }
    /*    若循环正常结束,说明m不能被任何一个i整除,则m素数,返回1*/
        return 1;
    }
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^