当前位置: 代码迷 >> C语言 >> 这是一个判断素数程序,我不明白的是第二个return为什么不用else,并且一加 ...
  详细解决方案

这是一个判断素数程序,我不明白的是第二个return为什么不用else,并且一加 ...

热度:248   发布时间:2006-08-14 21:04:27.0
这是一个判断素数程序,我不明白的是第二个return为什么不用else,并且一加9,15,..

/*判断素数*/
#include<stdio.h>
#include<ctype.h>
#define N 35
main()
{int i=0,k;
int a[N];
printf("\nPlease input some number:\n");
for(i=0;i<N;i++)
{scanf("%d",&a[i]);
k=issushu(a[i]);
if(k)
printf("%d is sushu ** ",a[i]);
else
printf("%d isn't sushu ** ",a[i]);
}
}
issushu(int m)
{int j;
for(j=2;j<m;++j)
if(m%j==0)
return 0;
/*else*/
return 1; /*千万别加 else */
}

这是一个判断素数程序,我不明白的是第二个return为什么不用else,并且一加9,15,..就都被判断为素数?在for下加不加{}都一样。

搜索更多相关的解决方案: 素数  else  return  判断  

----------------解决方案--------------------------------------------------------

打个比方:您要检验一本书里面是否有破页:
当您找到破页时,您就可以证明它有破页,从而停止继续翻下去,而当您没找到,那就得继续翻下去,直到整本书都让您给翻完,而不是看到一页是好的,马上就说这本书是完好的,直到您翻完,您才最后说:"哦,这本书质量还行!"


----------------解决方案--------------------------------------------------------
谢谢啊,比喻还真恰当。
----------------解决方案--------------------------------------------------------

经典!!!!!!!!


----------------解决方案--------------------------------------------------------
呵呵,为什么要加呢?那个if语句是for循环语句的循环体里的,而那个return 1;是在for循环之外的,他们之间没有什么联系啊,看到了那个例子了吧,呵呵,非常的恰当嘛!
if(m%j==0)
return 0 ;
return 1;
就是相当这几个语句,体会好了,就知道是怎么回事了。
----------------解决方案--------------------------------------------------------
  相关解决方案