全部问题 > 当前问题

我写的检验质数的程序有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");

 

}

调试之后,只要输入合数,第二次,第三次,都是合数,就算输入质数,结果也是合数。请问怎么改程序?

焦岚 2019-8-17 18:11:43

共 4 个回答

【C语言】桦桦 2019-8-31 10:35:49

把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);     /*输出不是素数*/


焦岚 2019-8-31 15:09:51

回复 【C语言】桦桦:能否把整个程序发给我?我这边调试不出来

【C语言】桦桦 2019-11-27 21:34:04

回复 焦岚

#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++;

  }

  if(flag==0)

  printf("%d是质数\n",n);

  else

  printf("%d不是质数\n",n);

  goto u;

  system("pause");

 

}


【C语言】桦桦 2019-11-27 21:35:03

回复 焦岚

#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<=m;i++)           

if(m%i==0)           

break;

if(i>m)               

printf("%d 是素数\n",m);       

else

printf("%d 不是素数\n",m);     

 

}