这是一个判断素数程序,我不明白的是第二个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下加不加{}都一样。
----------------解决方案--------------------------------------------------------
打个比方:您要检验一本书里面是否有破页:
当您找到破页时,您就可以证明它有破页,从而停止继续翻下去,而当您没找到,那就得继续翻下去,直到整本书都让您给翻完,而不是看到一页是好的,马上就说这本书是完好的,直到您翻完,您才最后说:"哦,这本书质量还行!"
----------------解决方案--------------------------------------------------------
谢谢啊,比喻还真恰当。
----------------解决方案--------------------------------------------------------
经典!!!!!!!!
----------------解决方案--------------------------------------------------------
呵呵,为什么要加呢?那个if语句是for循环语句的循环体里的,而那个return 1;是在for循环之外的,他们之间没有什么联系啊,看到了那个例子了吧,呵呵,非常的恰当嘛!
if(m%j==0)
return 0 ;
return 1;
就是相当这几个语句,体会好了,就知道是怎么回事了。
----------------解决方案--------------------------------------------------------