[求助]有一个挺复杂的语句不理解
在编一个“完数”的程序,在论坛里搜到了这个
#include<stdio.h>
int isPrime(long n,long i)
{
return n<i*i?1:n%i?isPrime(n,i+2):0; /*请问这句怎么理解*/
}
int main(void)
{
long x,y;
for(x=2,y=4;x*y>0;x=y,y+=y)
if(isPrime(y-1,3))
printf("%ld\n",x*(y-1));
return 0;
}
----------------解决方案--------------------------------------------------------
转换成if/else
----------------解决方案--------------------------------------------------------
能不能帮我换一下,因为对这个形式,不太熟悉,只知道最简单那种 "x>y? x:y"
----------------解决方案--------------------------------------------------------
哪位高手有时间给讲一下吧,多谢多谢了!
----------------解决方案--------------------------------------------------------
if(n<i*i)
return 1;
else if(!n%i)
return 0;
else return isPrime(n,i+2);
思路完全是根据判断是否是质数的常规思路来的。
----------------解决方案--------------------------------------------------------
[QUOTE]if(n<i*i)
return 1;
else if(!n%i)
return 0;
else return isPrime(n,i+2);[/QUOTE]
wa!!
----------------解决方案--------------------------------------------------------
if(n<i*i)
{
1
}
else
{
if(n%i)
{
isPrime(n,i+2)
}
else
{
0
}
}
----------------解决方案--------------------------------------------------------
咩?老大写了啊
----------------解决方案--------------------------------------------------------
以下是引用soft_wind在2006-8-31 9:19:00的发言:
if(n<i*i)
return 1;
else if(!n%i)
return 0;
else return isPrime(n,i+2);
思路完全是根据判断是否是质数的常规思路来的。
错了吧 if(n<i*i)
return 1;
else if(!n%i)
return 0;
else return isPrime(n,i+2);
思路完全是根据判断是否是质数的常规思路来的。
----------------解决方案--------------------------------------------------------
return n<i*i?1:n%i?isPrime(n,i+2):0;
if(n<i*i)
return 1;
else if(!n%i)
return isPrime(n,i+2);
else return 0;
为啥不是这个呢?
----------------解决方案--------------------------------------------------------