C 为什么这个检查素数的程序不起作用?

C 为什么这个检查素数的程序不起作用?,c,C,我刚开始编程。我写了一个简单的C程序来检查素数,但它不起作用。请帮我找出我的错误 #include<stdio.h> void main() { int n,i,c=0; printf("enter any number: "); scanf("%d", &n); for(i=2;i<n;i++) { if(n%i==0) c=c+1; if(c>0){ break; pr

我刚开始编程。我写了一个简单的C程序来检查素数,但它不起作用。请帮我找出我的错误

#include<stdio.h>
void main()
{
   int n,i,c=0;
   printf("enter any number: ");
   scanf("%d", &n);
   for(i=2;i<n;i++)
   {
     if(n%i==0)
       c=c+1;
     if(c>0){
       break;
       printf("\n%d is  not   a prime number",n);
     }
   }
   if(i==n)
     printf("\n%d is a prime number",n);
}
#包括
void main()
{
int n,i,c=0;
printf(“输入任何数字:”);
scanf(“%d”和“&n”);
对于(i=2;i0){
打破
printf(“\n%d不是质数”,n);
}
}
如果(i==n)
printf(“\n%d是质数”,n);
}

如果在
printf之后加上
break
(\n%d不是质数),n)程序工作正常。当C执行
break
命令时,它会立即跳出最近的循环,因此它不会执行循环中的下一行,也就是说,不会打印它不是质数。

编译器是否会在
break之后对语句发出警告?不确定为什么它不工作,但c在这里似乎是一个无用的变量。为什么不这样做呢:如果(n%i==0){stuff in here}……但是如果输出行以换行符结尾,并且实际上不需要
c
,并且应该在代码行中使用更多的空格,在输出中使用的字符串中使用更少的随机间距,并且标准支持
int main()
而不是
void main())
,而且算法不是很有效…@JonathanLeffler确实你写的都是真的!他是初学者,所以他会学这些东西。我只是想解决为什么程序不能正常工作,这是他的问题。其他的事情更多的是关于程序的风格和效率。是的,这很好(可以限制你答案的范围);这就是为什么我要发表评论,而不是把我的信息强加于人。