做肠镜有什么副作用:大哥大姐们求救啊

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/03 02:36:15
#include <math.h>
main()
{
int i,n;
for(n=2;n<=50;n++)
{
for(i=2;i<=(int)sqrt(n);i++)
if(n%i==0)
break;
if(i==(int)sqrt(n)+1)
printf("%4d",i);
}
}
以上的答案i为什么会等于:2 2 3
能简单分析一下吗??
我不懂的是,当内层的i为2的时候,此时外层的n也为2,但为什么此时i<=(int)sqrt(n);会成立,为什么还会执行下面的语句呢????

#include <math.h>
main()
{
int i,n;
for(n=2;n<=50;n++)
{
for(i=2;i<=(int)sqrt(n);i++) //n=2,3时该循环不执行
if(n%i==0)
break;
if(i==(int)sqrt(n)+1) //n=2,3时i都为2
printf("%4d",i);
}
}

在我机子上的运行果是:
2 2 3 3 4 4 5 5 5 6 6 7 7 7 7
第一个2是怎么出来的
内层有一个i=2;也就是在进入时会置2
这条语句if(n%i==0)break; 会跳出内层的循环.

你这个程序是做什么的?

程序结果就应该是 2 2 3 3 4 4 ...

程序有点乱
n=2 时 输出第一个 2
n=3 时 输出第二个 2
n=5 时 输出第一个 3
....

2 2 3 在系统连续出现是 明显错误滴