[問題] 為什麼此程式輸入太大的數就會錯誤??我是C新手,謝謝幫忙

看板C_and_CPP作者 (fireslayer)時間16年前 (2010/03/02 22:13), 編輯推噓3(307)
留言10則, 4人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 希望得到的正確結果: 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) 有問題的code: (請善用置底文標色功能) // 判斷是否為質數.cpp : 定義主控台應用程式的進入點。 // #include "stdafx.h" #include "stdlib.h" int _tmain(int argc, _TCHAR* argv[]) { int finish; int test = 2; int number; printf("請輸入一個大於一的正整數~\n"); scanf_s("%d", &number); if(number % 1 !=0||number <= 1) printf("你輸的數字與條件不符\n"); else { while(number % test != 0&&number != 2&&number >= test) test = test + 1; if(test < number) printf("此數不是質數喔~~\n"); else printf("此數是質數喔!!\n"); } system("pause"); return 0; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.40.80

03/02 22:17, , 1F
你所謂太大的數是多大?
03/02 22:17, 1F

03/02 22:19, , 2F
小弟比較不懂, 要抓<=0直接寫就好了, 寫%1!=0的用意是??
03/02 22:19, 2F

03/02 22:20, , 3F
在32 bit int的環境, 輸入大於 2147483647 自然會錯誤:)
03/02 22:20, 3F

03/02 22:21, , 4F
回樓上, 測試是否為奇數
03/02 22:21, 4F

03/02 22:22, , 5F
看錯拍謝~"~
03/02 22:22, 5F

03/02 22:22, , 6F
不過我覺得用unsigned 自然可以解決很多問題
03/02 22:22, 6F

03/02 22:24, , 7F
大家人都滿好的...這種只貼code的文...
03/02 22:24, 7F

03/02 22:26, , 8F
他的問題寫在title啦XD 雖然嚴格來說也不完全符合規定XD
03/02 22:26, 8F

03/02 22:27, , 9F
又只要>1正整數, 所以明明判斷<=1就夠了, 才覺得不懂@_@
03/02 22:27, 9F

03/03 20:06, , 10F
嗯我知道了用unsigned解決問題,下次會更注意格式謝謝
03/03 20:06, 10F
文章代碼(AID): #1BZHqZqG (C_and_CPP)