我是新来的,请帮我解决这个问题。
如何用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/