嚴重過敏 10 發表於 May 3, 2009 檢舉 Share 發表於 May 3, 2009 #include <stdio.h>#include <math.h>int fun(int);int main(void){ int x;while(scanf("%d",&x)==1);if(fun(x)==1)puts("質數");else puts("非質數");return 0;}int fun(int n){int i,temp;if(n==2)return 1;if(n%2==0)return 0;temp=(int)sqrt((double)n);for(i=3;i<=temp;i+=2)if(n%i==0)return 0;return 1;}放到zerojudge上出來的結過是WA...如下與正確輸出不相符(line:1)您的答案為: 非質數正確答案為: 質數到底哪裡出錯???? 鏈接文章 分享到其他網站
~雨豆阿底.一人房~ 10 發表於 May 3, 2009 檢舉 Share 發表於 May 3, 2009 while 後面沒有{} 反而是 ;這應該是你程式錯誤的主因,根本就跑不進去迴圈阿:P我看不懂你的while條件式。根據質數定義:一個大於1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數;即只有兩個正因數(1和自己)的自然數所以把條件式改為 while(scanf("%d",&x), x>1){ 的話,除了終止條件,可以順便做到防呆的效果。以上,僅供參考。 鏈接文章 分享到其他網站
j100002ben 10 發表於 May 6, 2009 檢舉 Share 發表於 May 6, 2009 更好的寫法是:while(scanf("%d",&x)!=EOF&& x>1){ 鏈接文章 分享到其他網站
j100002ben 10 發表於 May 16, 2009 檢舉 Share 發表於 May 16, 2009 那個while的式子是讓測資可以跑...確認scanf讀入一筆資料恩恩,沒有錯。不過while(scanf("%d",&x)!=EOF&& x>1){ 的寫法除了可以檢查是否達到檔案結尾外,還可同時檢查資料的正確性。算是進階的寫法~ 鏈接文章 分享到其他網站
Recommended Posts
請登入後來留意見
在登入之後,您才能留意見
立即登入