求素数的问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 23:20:02
以下是一段求素数的正确代码:
#include<math.h>
#include<stdio.h>
main()
{
int m,i,k;

for(m=101;m<=200;m+=2)
{

k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>k) printf("%d\n",m);

}

}

问题1:为什么是i>k时才是素数?

问题2:为什么把第二个for循环后面的两个if语句用大括号一起括起来就得不到任何结果了呢?

i>k 说明内循环 一直执行到 i>k才结束。而不是因为 break ;
说明m一直都不能被i整除。
break 出来的话一定有 i<=k ;

2,大括号括起来后,
if(i>k) 永远都不会被执行。
因为 i=k 执行最后一次内循环,i++ 后不符合循环条件
内循环结束了。
没输出。