PDA

查看完整版本 : C語言判定是否為質數的程式


哈啦
2014-03-12, 06:29 PM
書上的範例如下:

#include <stdio.h>

int main(void)
{
int num,x,is_prime;

printf("enter a number to test: \n");
scanf("%d",&num);
is_prime=1;
for(x=2;x<=num/2;x++)
if((num%x)==0) is_prime=0;
if(is_prime==1) printf("%d is prime.",num);
else printf("%d is not prime.",num);
return 0;
}

大致能了解它的邏輯推衍,但對於紅字那部份,我改成x<num/2,不要<=,算出來的結果是一樣的,但我覺得去掉=更合理,因為如果有=的情況,則num一定是複數,除以2才會得到某個整數和x是等於的,複數就不會是質數,多此一舉。不知我的邏輯對不對?還是有啥隱藏漏洞?

thanks!

yumi
2014-03-13, 09:57 AM
输入4 试一下就知道了 结果是不一样的

另外 输入1 可以发现 两种写法都不对

wufenpu
2014-03-13, 11:36 AM
1應該要加個特別判斷式,判斷成非質數。

哈啦
2014-03-13, 11:58 AM
原來書上範例才是對的,就是考慮到4這個數字。~yes

難怪寫程式常常會有所謂的bug,大概就是類似在這種小地方設計者疏忽了吧??:teeth

best-url
2014-03-13, 02:53 PM
https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-prn2/t1/969712_654517904562433_466243689_n.png