我写的检验质数的程序有bug,请问怎么改?
第一次无论质数合数都是正确的;第二次一旦输入合数,那程序出错
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
int i,n,flag=0,u;
u: printf("请输入一个大于1的整数:");
scanf("%d",&n);
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
flag=1;
}
if(flag==0)
printf("%d是质数\n",n);
else
printf("%d不是质数\n",n);
goto u;
system("pause");
}
调试之后,只要输入合数,第二次,第三次,都是合数,就算输入质数,结果也是合数。请问怎么改程序?
把flag=1换成flag++
或者是
for(i=2;i<=m;i++) /*用for函数重复下面步骤*/
if(m%i==0) /*判断输入的数是否能被除1和本身以外的数整除*/
break;
if(i>m) /*判断i是否大于m*/
printf("%d 是素数\n",m); /*输出是素数*/
else
printf("%d 不是素数\n",m); /*输出不是素数*/