#1193: 自學C語言 遇到挫折 有點灰心 誰能幫幫我!!


k43582 (k43582)

學校 : 不指定學校
編號 : 5175
來源 : [218.35.155.253]
最後登入時間 :
2011-02-09 21:24:09
a007. 判斷質數 | From: [203.121.252.19] | 發表日期 : 2009-01-18 18:17

 拜託好新的大大幫幫我大哭

我在電腦餵值值給他都沒錯

丟上去他說錯了 以下是程式碼跟他顯示的錯誤 

 

與正確輸出不相符(line:21)
您的答案為: 非質數
正確答案為: 質數

 

#include <stdio.h>
#include <math.h>

int a=0,i=0,temp=0,decision_prime=0,float_to_int=0; //a為抓取的值   temp為取%後的餘數  decision_prime=0為一個計數器用來判別是否為質數                

double s=0;                                                                //float_to_int 為浮點數轉整數 也就是取下高斯                                  

int main()
{
  while(scanf("%d",&a)!=EOF)  //抓值直到沒資料
  { 
    s=sqrt(a); //把a開根號 其為一個浮點數
    float_to_int=s; // 把上面的浮點數變成整數  也就是取下高斯之意思
    for(i=2;i<=float_to_int;i++) //開始比較 從2一直到小於根號a取高斯之值 看他是否為質數

    {
      temp=a%i;  //取餘數

      if(temp==0) //利用餘數等於0可知他被整除
      { 
        printf("非質數\n");
        break;    //早到有一個數可整除他即可 代表他不是質數 跳開迴圈  去抓下一個數 
      }
      if(temp!=0)  //沒整除

        decision_prime++;    //紀錄起來沒整除之個數
        
      if(decision_prime== float_to_int-1)  // 如果小於根號a取下高斯之值  都無法整除a a就是質數

        printf("質數\n");
    } 
    decision_prime=0; //歸0去抓下一個數
  } 
  return 0;
}

 

 
#1194: Re:自學C語言 遇到挫折 有點灰心 誰能幫幫我!!


k43582 (k43582)

學校 : 不指定學校
編號 : 5175
來源 : [218.35.155.253]
最後登入時間 :
2011-02-09 21:24:09
a007. 判斷質數 | From: [203.121.252.19] | 發表日期 : 2009-01-18 18:19

沒註解的程式碼

 

#include <stdio.h>
#include <math.h>

int a=0,i=0,temp=0,decision_prime=0,float_to_int=0;
double s=0;

int main()
{
  while(scanf("%d",&a)!=EOF) 
  { 
    s=sqrt(a);
    float_to_int=s;
    for(i=2;i<=float_to_int;i++)
    {
      temp=a%i;
      if(temp==0)
      { 
        printf("非質數\n");
        break;     
      }
      if(temp!=0)
        decision_prime++;   
        
      if(decision_prime== float_to_int-1) 
        printf("質數\n");
    } 
    decision_prime=0;
  } 
  return 0;
}

 

 
#1195: Re:自學C語言 遇到挫折 有點灰心 誰能幫幫我!!


morris1028 (碼畜)

學校 : 國立花蓮高級中學
編號 : 3529
來源 : [114.37.59.62]
最後登入時間 :
2021-07-12 19:00:43
a007. 判斷質數 | From: [118.161.219.131] | 發表日期 : 2009-01-18 18:25

 

 

我的做法是:用for從2找到(int)sqrt(a)+1 如果有整除它的數的話 即為非質數。當然2是另外
 
#1196: Re:自學C語言 遇到挫折 有點灰心 誰能幫幫我!!


k43582 (k43582)

學校 : 不指定學校
編號 : 5175
來源 : [218.35.155.253]
最後登入時間 :
2011-02-09 21:24:09
a007. 判斷質數 | From: [203.121.252.19] | 發表日期 : 2009-01-18 18:55


  那能幫我看看嗎    我跟你的想法很像 拜託 
#1197: Re:自學C語言 遇到挫折 有點灰心 誰能幫幫我!!


morris1028 (碼畜)

學校 : 國立花蓮高級中學
編號 : 3529
來源 : [114.37.59.62]
最後登入時間 :
2021-07-12 19:00:43
a007. 判斷質數 | From: [118.161.219.131] | 發表日期 : 2009-01-18 18:58


  那能幫我看看嗎    我跟你的想法很像 拜託


我寄給你了,等等唄 
#1198: Re:自學C語言 遇到挫折 有點灰心 誰能幫幫我!!


k43582 (k43582)

學校 : 不指定學校
編號 : 5175
來源 : [218.35.155.253]
最後登入時間 :
2011-02-09 21:24:09
a007. 判斷質數 | From: [203.121.252.19] | 發表日期 : 2009-01-18 19:40

我希望你能邦我debug 拜託  真的好想知道我哪裡錯 大哭 
#1276: Re:自學C語言 遇到挫折 有點灰心 誰能幫幫我!!


POOHccc ()

學校 : 國立臺中技術學院
編號 : 1139
來源 : [220.135.97.253]
最後登入時間 :
2012-02-04 21:23:42
a007. 判斷質數 | From: [220.135.97.253] | 發表日期 : 2009-01-31 22:00

      if(decision_prime== float_to_int-1)
        printf("質數\n");
    
    decision_prime=0;

 

這三行放在for的外面就AC了

 
#1524: Re:自學C語言 遇到挫折 有點灰心 誰能幫幫我!!


xatier (一串電研的阿飄先生)

學校 : 國立臺中第一高級中學
編號 : 4282
來源 : [140.113.17.175]
最後登入時間 :
2014-12-09 21:57:44
a007. 判斷質數 | From: [210.60.107.236] | 發表日期 : 2009-03-10 11:34

其實要取高斯只要用<math.h>裡的floor函式就好了 
ZeroJudge Forum