回 帖 发 新 帖 刷新版面

主题:请高手指教

你好!我编写了一个求素数的程序,如下:
#include<stdio.h>
#include<math.h>
main()
{
    int i,n;
    double j;
    printf("please input a number :");
    scanf("%d",&n);
    j=sqrt(n);
    for(i=2;i<j;i++);
    {
        if(n%i==0) 
            break;
        if(i>=j)
            printf("该数是素数!!!");
    }
}
但是有一个错误:error C2043: illegal break
请高手指点指点!我该怎么做呢?为什么会这样?

回复列表 (共5个回复)

沙发

break 一般用在循环或switch语句中的,把 if(n%i==0)该为 while(n%i==0)就行了!

还可以:
  #include<stdio.h>
#include<math.h>

 int  main(void)
{
    int i,n;
    int j;
    printf("please input a number :");
    scanf("%d",&n);
    j=(int)sqrt(n);
    for(i=2;i<j;i++);
    {
        if(n%i!=0) 
        printf("该数是素数!\n");
        else
        printf("该数不是素数!\n");
    }
    return 0;
}
 在编程的时候最好要养成良好的编程习惯,呵呵,仅供参考!

板凳

我的那个
for(i=2;i<j;i++);
if(n%i!=0) 
        printf("该数是素数!\n");
        else
        printf("该数不是素数!\n");
错了,呵呵,有点仓促了!不好意思~

3 楼

哦!很好!呵呵,太感谢你啦!那个break在循环中能用吗?我想应该可以吧!请指教!!!
[em12]

4 楼

第二个判断写在循环里的话永远都不会满足条件的

5 楼

恩,break 适用于用在循环或switch语句中的,对,你的那个第二个判断在里面是多余的,因为在for循环里已经有了 i<j 作为终止的条件了!

我来回复

您尚未登录,请登录后再回复。点此登录或注册