#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
int i,j,n,flag=1;//flag默认为1,以方便标记素数
while(scanf("%d",&n)!=EOF)
{
if(n == 1)
{
printf("1\n");//1为素数
}
for(i = 2; i<= n; i++)
{
for(j = 2; j<= i/2; j++)
//i/2的原因:省掉一半的计算时间,一个数如果被2,3,5,7等素数整除,那么它肯定不为素数
//还有一种方法是:int k = (int)sqrt((double)n)
{
if(i % j == 0)
{
flag = 0;//标记为0,跳过不是素数的
break;//跳出该层fot循环,执行if(flag == 1)
}
}
if(flag == 1)//把判断flag的if语句,放在内层循环外
{
printf("%d\n",i);//打印素数
}
flag = 1;//初始值
}
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载