作者fireslayer (fireslayer)
看板C_and_CPP
標題[問題] 為什麼此程式輸入太大的數就會錯誤??我是C新手,謝謝幫忙
時間Tue Mar 2 22:13:52 2010
( *[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
推 loveme00835:你所謂太大的數是多大? 03/02 22:17
推 VictorTom:小弟比較不懂, 要抓<=0直接寫就好了, 寫%1!=0的用意是?? 03/02 22:19
→ VictorTom:在32 bit int的環境, 輸入大於 2147483647 自然會錯誤:) 03/02 22:20
推 loveme00835:回樓上, 測試是否為奇數 03/02 22:21
→ loveme00835:看錯拍謝~"~ 03/02 22:22
→ loveme00835:不過我覺得用unsigned 自然可以解決很多問題 03/02 22:22
→ dendrobium:大家人都滿好的...這種只貼code的文... 03/02 22:24
→ VictorTom:他的問題寫在title啦XD 雖然嚴格來說也不完全符合規定XD 03/02 22:26
→ VictorTom:又只要>1正整數, 所以明明判斷<=1就夠了, 才覺得不懂@_@ 03/02 22:27
→ fireslayer:嗯我知道了用unsigned解決問題,下次會更注意格式謝謝 03/03 20:06