0

次のコードからgotoを削除するにはどうすればよいですか?

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>

bool is_prime(unsigned num)
{

   if(num==0 || num==1)
     return false;
   if(num==2)
     return true;
   for(unsigned i=2;i<=num-1;i++)
    if(num%i==0)
        goto step;

             return true;
      step:  return false;
}


int main(void)
{
  unsigned n;
  printf("enter the number: ");
  scanf("%u",&n);
  printf("%u\n",is_prime(n));
  return 0;
}
4

4 に答える 4

2

に置き換えますreturn false;return関数を終了します。コードはすでにその動作に依存しています。

bool is_prime(unsigned num)
{
    if(num == 0 || num == 1)
        return false;
    for(int i = 2; i < num - 1; i++)
        if(num % i == 0)
            return false;

    return true;
}
于 2013-09-28T16:21:10.503 に答える
1

gotoステートメントを削除してreturn false代わりに使用してください。

   if(num%i==0)
       // goto step;
       return false;

   return true;
于 2013-09-28T16:21:23.547 に答える
1
if(num%i==0)    //if true return false and if fail return true.
    goto step;   

         return true;
  step:  return false; 

上のブロックは等しい

    if(num%i==0)    //if true return false and if fail return true.
       return false;   
     return true;
于 2013-09-28T16:23:45.497 に答える
1

ええと、3つの方法

if(num%i!=0)
       return false;
return true;

または、 を使用できますelse

または、あなたはただすることができます

return (num%i == 0);
于 2013-09-28T16:24:41.677 に答える