c语言的问题,帮我解答一下

来源:百度知道 编辑:UC知道 时间:2024/06/01 12:58:53
#include "stdio.h"
main()
{int m,i;
scanf("%d",&m);

for(i=2;i<m;i++)
{if(m%i==0) printf("NO"); break; }

if(i>=m) printf("YES");

getch();
}
我在win-tc中编译的,判断一个数是不是质数。哪里有问题啊?
如果我给m输入2,for循环里面的i=2会执行吗,是不是直接跳出循环了?
我已经试验过了,for循环里面的i=2会在跳出之前,先被执行。还有 znhygsd - 先生,你说的是不是错的离谱了?

break就代表跳出FOR循环,然后就执行后面的了,所以只输出一次
所以不能这样写,写在一行和不写在一行的执行顺序是不一样的。

#include "stdio.h"
main()
{
int m,i;
scanf("%d",&m);
for(i=2;i<m;i++)
{
if(m%i==0)
{
printf("no\n");
break;
}
}

if(i>=m) printf("YES");

}
//这样就没问题了,但是当你输入1的时候会得到错误的判断。

我在win-tc中编译的,判断一个数是不是质数。哪里有问题啊?
如果我给m输入2,for循环里面的i=2会执行吗,是不是直接跳出循环了?

i=2会执行,要解决的话就需要在:

for(i=2;i<m;i++)

改成:for(i=2;i<=m;i++)

这样可以解决输入2的问题。

for(1;2;3){4}; i=m-1时(假设m为质数),执行4后,循环会跳到3执行3即i++,再进行2判断,所以循环完毕后i=m;无论你怎么搞都输出YES

对 直接跳出了
2小于2所以FOR不成立,根本没有执行FOR语句
下面的IF语句成立输出YES

i=2会执行,但是IF后面的语句不会执行!