一个简单C程序

下面的一个程序,我有两个疑问。
1.每当我输入一个不是素数的数时,屏幕上会给出NO,但是我输入的数越大,这个NO也会越多。我怎么才能使NO只出现一次呢。要用break之类的语句吗。

2. 在程序第十行中,如果我不加";"的话,VC++6.0告诉我说有error,这一点比较奇怪,我记得for后面不应该加冒号啊。
不知道怎么回事。

问题:输入一个数,判断是否为素数。
#include<stdio.h>
#include<math.h>
main()
{
int i,x;
scanf("%d",&x);
for(i=2;i<=x-1;i++)
if(x%i==0) printf("NO\n");
for(i=2;i<=x/2;i++)
for(i=2;i<=sqrt(x);i++);
}
第十行不加冒号时出错信息为:
C:\Documents and Settings\w\桌面\111\project\1.c(11) : error C2143: syntax error : missing ';' before '}'

1,这样的程序一般都要用BREAK之类的,以便提前退出循环
2,FOR后面不用跟;,但是需要跟句子啊,FOR的作用域就是到它后面的;(没有{}的情况下)。就算是跟空句子也要用一个;表示空句子啊!
3,你的程序后面两个循环每必要啊!
#include<stdio.h>
#include<math.h>
main()
{
int i,x;
scanf("%d",&x);
for(i=2;i<=x-1;i++)
if(x%i==0)
{
printf("NO\n");
BREAK;
}
IF(i==x)printf("Yes\n");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-05
一个for循环必须有循环体。但是循环体如果是空的话分号已不能省略。就像第十行。没有循环体。

你是循环输出当满足循环条件x%i==0时输出一个“NO”如果是24 这在这个for 中就输出6个 24%2==0 24%3==0 24%4==0 24%6==0 24%8==0 24%12==0
第2个回答  2013-03-30
#include <stdio.h>#include <math.h>
main(){
int i, x;
scanf("%d", &x);
for(i=2; i<=x-1; i++)
{
if(x%i==0)
{
printf("No\n");
break;
}
}
if(i==x)
printf("Yes\n");
}
这个程序里的括号分明,有助于看看程序的结构,希望对初学者能有帮助。
相似回答