C语言编程判断素数

这是我的程序:#include<stdio.h>void main(){ int i,n; scanf("%d",&i); for(n=2;n<i;n++) if(i%n==0) { printf("not prime尀n"); break; } else { printf("prime尀n"); break; }}可是为什么输入9、15、51等数时运行出现“prime”(素数)呢?
2026年09月27日 18:10
有5个网友回答
网友(1):

#include
void main()
{
int i,n;
scanf("%d",&i);
for(n=2;nif(i%n==0)
break; /*余数为0时终止循环,关键是这里.朋友*/
if(nprintf("not prime\n");
else
printf("prime\n");
getch();
}

网友(2):

...for只循环了一次,if else 里的两个 break 跳出 for循环...
故楼主的程序但凡2能整除的输出not prime,否则输出prime...
所以出现"输入9、15、51等数时运行出现“prime”(素数)"

网友(3):

程序本身就是错的,修改如下:

void main()
{
int i,n;
int flag = 0;
scanf("%d",&i);
for(n=2;n{
if(i%n==0)
{
flag = 1;
break;
}
}

if (flag)
printf("no primer\n");
else
printf("primer\n");
}

网友(4):

#include
void main()
{
int i,n;
scanf("%d",&i);
for(n=2;n{

if(i%n==0)
{
printf("not prime\n");
break;
}
else
{
printf("prime\n");
break;
}

} //for 循环要加{ ……}

}

网友(5):

当然了你这个程序有问题,无论你输入哪个数,它都只循环一次就跳出整个for循环了!因为你两个小程序块里都加了break!