我写的检验质数的程序有bug,请问怎么改?
焦岚 资深会员 2019-08-17 18:11:43
62 4 0

第一次无论质数合数都是正确的;第二次一旦输入合数,那程序出错

#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");

 

}

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

共 4 个回答

    【C语言】桦桦 人气新星 99天前

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


    焦岚 资深会员 99天前

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

    【C语言】桦桦 人气新星 10天前

    回复 焦岚

    #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语言】桦桦 人气新星 10天前

    回复 焦岚

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

     

    }


您还没有登录,所以不能回复该问题
我要回复

  • 0

    点赞

  • 扫一扫分享朋友圈

    二维码

  • 分享