#3363: 可以幫我看看嗎?QQ


greatspy (搞)

學校 : 不指定學校
編號 : 10827
來源 : [123.193.91.87]
最後登入時間 :
2010-03-01 16:35:17
a007. 判斷質數 | From: [123.194.201.74] | 發表日期 : 2010-02-03 11:32

我用devC++開發

但是卻一直回傳逾時的訊息

希望有高手可以幫我看看

#include <iostream>
#include <math.h>
using namespace std;

int main()
{
   float a;
   double s;
   int k;
   while((scanf("%f",&a))!=EOF)
   {  
       s = sqrt(a);
       k = (int)ceil(s);
       for(int t=2;t<=k;t++)
       {
               if((int)a%t==0||(int)a%2==0)
               {
                  if((int)a == 2){
                  printf("質數\n");
                  main();              
                  }
                  else{
                  printf("非質數\n");
                  main();
                  }
               }
               else if(t==k)
               {
               printf("質數\n");
               main();
               }
       }
   }
    return EXIT_SUCCESS;
}

 

 
#3364: Re:可以幫我看看嗎?QQ


example (學姊)

學校 : 臺北市立麗山高級中學
編號 : 6634
來源 : [60.250.138.144]
最後登入時間 :
2022-08-09 17:07:42
a007. 判斷質數 | From: [118.166.112.31] | 發表日期 : 2010-02-03 15:37

我用devC++開發

但是卻一直回傳逾時的訊息

希望有高手可以幫我看看

#include
#include
using namespace std;

int main()
{
   float a;
   double s;
   int k;
   while((scanf("%f",&a))!=EOF)
   {  
       s = sqrt(a);
       k = (int)ceil(s);
       for(int t=2;t<=k;t++)
       {
               if((int)a%t==0||(int)a%2==0)
               {
                  if((int)a == 2){
                  printf("質數\n");
                  main();              
                  }
                  else{
                  printf("非質數\n");
                  main();
                  }
               }
               else if(t==k)
               {
               printf("質數\n");
               main();
               }
       }
   }
    return EXIT_SUCCESS;
}

 我想你在 if 裡面的 main() 應該是 break 的意思吧

 是"印出之後跳出"嗎 ?

 
#3367: Re:可以幫我看看嗎?QQ


greatspy (搞)

學校 : 不指定學校
編號 : 10827
來源 : [123.193.91.87]
最後登入時間 :
2010-03-01 16:35:17
a007. 判斷質數 | From: [123.194.201.74] | 發表日期 : 2010-02-04 11:44

我用devC++開發

但是卻一直回傳逾時的訊息

希望有高手可以幫我看看

#include
#include
using namespace std;

int main()
{
   float a;
   double s;
   int k;
   while((scanf("%f",&a))!=EOF)
   {  
       s = sqrt(a);
       k = (int)ceil(s);
       for(int t=2;t<=k;t++)
       {
               if((int)a%t==0||(int)a%2==0)
               {
                  if((int)a == 2){
                  printf("質數\n");
                  main();              
                  }
                  else{
                  printf("非質數\n");
                  main();
                  }
               }
               else if(t==k)
               {
               printf("質數\n");
               main();
               }
       }
   }
    return EXIT_SUCCESS;
}

 我想你在 if 裡面的 main() 應該是 break 的意思吧

 是"印出之後跳出"嗎 ?

作用很像但不是break

我是讓他印出之後重新進入main()

 
#3372: Re:可以幫我看看嗎?QQ


linishan (L)

學校 : 國立交通大學
編號 : 1090
來源 : [104.132.150.102]
最後登入時間 :
2019-05-10 19:57:54
a007. 判斷質數 | From: [125.228.233.149] | 發表日期 : 2010-02-04 21:04

 作用很像但不是break

我是讓他印出之後重新進入main()



重新進入main()?

那不就是無窮的遞迴嗎?(重新執行while那些..  等到執行到main();  又再繼續call ... 一直call...)

有嚴重的邏輯瑕疵 建議重寫..

 
#3374: Re:可以幫我看看嗎?QQ


example (學姊)

學校 : 臺北市立麗山高級中學
編號 : 6634
來源 : [60.250.138.144]
最後登入時間 :
2022-08-09 17:07:42
a007. 判斷質數 | From: [118.166.112.234] | 發表日期 : 2010-02-04 23:09

 作用很像但不是break

我是讓他印出之後重新進入main()

 那應該是用 break; 代替呼叫 main() 哦

 不用重寫啦

 
#3376: Re:可以幫我看看嗎?QQ


linishan (L)

學校 : 國立交通大學
編號 : 1090
來源 : [104.132.150.102]
最後登入時間 :
2019-05-10 19:57:54
a007. 判斷質數 | From: [125.226.14.69] | 發表日期 : 2010-02-05 21:01

 作用很像但不是break

我是讓他印出之後重新進入main()

 那應該是用 break; 代替呼叫 main() 哦

 不用重寫啦

噢 對唷= =

沒看清楚˙˙˙

他的寫法滿特別的 0.0

 

檢查質數其實..  先判斷是否是2的倍數  改+=2

速度會是2倍快~

 
ZeroJudge Forum