我是新来的,请帮我解决这个问题。
如何用C程序找到下一个豪猪号。根据定义,豪猪的数量是:
质数
9结尾
示例:139

int findPorcupineNumber(int n)
{
   int flg;
    //first check it is prime number
    for(int i=2;i<=n/2;++i)
    {
        if(n%i==0)
        {
            flag=1;
            break;
        }
    }
    if (flag==0)
        // printf("%d is a prime number.",n);

        //Now check here is last digit of number is 9
        //i did like this
        if(n%10==9){
            n/=10;
            //it is porcupine number
            //find next porcupine number
       }
        else
            printf("%d is not a prime number.",n);
    return 0;
}

如何找到下一个豪猪号码

最佳答案

目前你的算法是这样工作的

1. find a prime number
2. if prime number is found
   --> check if prime number ends with 9
             --> success
             else
             --> print "number is not prime"

所以你的if和else语句没有正确地“连接”。
你想要的是
1. find a prime number
2. if prime number is found
   --> check if prime number ends with 9
             --> success
             else
             --> failure
   else
   --> print "number is not prime"

编译器总是将最后一个else语句连接到他找到的最后一个if语句,除非您告诉他使用花括号来进行不同的操作。您的代码应该更像这样:
if (flag == 0)
{
    if (n % 10 == 9)
    {
       print("%d is a porcupine number\n", n);
    }
}
else
{
    printf("%d is not a prime number\n", n);
}

我强烈建议您在每个if和else语句周围写上花括号,即使该语句后面只有一行。这将使您的可读性更强,更不容易出错。
编辑:
如果在找到第一个豪猪编号后需要找到下一个豪猪编号,只需返回1如果找到一个豪猪编号,然后搜索,直到找到下一个。
int start = 139;
if (findPorcupineNumber(start))
{
    int n = start;
    do
    {
      n++;
    } while (!findPorcupineNumber(n));
    printf("next porcupine after %d is %d\n", start, n);
}

关于c - 带有C程序的豪 pig 号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36418532/

10-10 14:03