網域名稱俱樂部


返回   網域名稱俱樂部 > 電腦與網路技術 > 電腦網路相關技術 > 一般軟體與網路使用討論

回覆
 
主題工具
  #1  
舊 2014-03-12, 06:29 PM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 22,996
預設 C語言判定是否為質數的程式

書上的範例如下:

代碼:
#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!
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #2  
舊 2014-03-13, 09:57 AM
yumi yumi 目前離線
進階會員
 
註冊日期: 2005-12-29
文章: 1,373
預設

输入4 试一下就知道了 结果是不一样的

另外 输入1 可以发现 两种写法都不对
__________________
收购各位版友的四字母com、数字米com/net/cc、三杂米com、拼音米。价格随行市价。站内联系。
回覆時引用此篇文章
  #3  
舊 2014-03-13, 11:36 AM
wufenpu wufenpu 目前離線
進階會員
 
註冊日期: 2007-12-13
文章: 1,703
預設

1應該要加個特別判斷式,判斷成非質數。
__________________
香水 | 香氛
回覆時引用此篇文章
  #4  
舊 2014-03-13, 11:58 AM
哈啦 的頭像
哈啦 哈啦 目前離線
論壇管理員
 
註冊日期: 2002-05-28
文章: 22,996
預設

原來書上範例才是對的,就是考慮到4這個數字。

難怪寫程式常常會有所謂的bug,大概就是類似在這種小地方設計者疏忽了吧?
__________________
咖啡走路
微博


您是網站站長嗎?歡迎到站長俱樂部 一起討論吧。
按我看版規
code.club
回覆時引用此篇文章
  #5  
舊 2014-03-13, 02:53 PM
best-url 的頭像
best-url best-url 目前離線
站務管理
 
註冊日期: 2003-08-11
住址: IDN Club
文章: 9,925
發送 MSN 消息給 best-url
預設

回覆時引用此篇文章
回覆

主題工具

發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼



所有時間均為 +8。現在的時間是 03:57 AM


本站主機由網易虛擬主機代管
Powered by vBulletin® 版本 3.8.4
版權所有 ©2000 - 2024,Jelsoft Enterprises Ltd.