#6990: 逾時怎麼辦啊??


james35022000 (010243)


#include <iostream>
using namespace std;

int main()
{
    int a,b;
    while(cin>>a)
    {
        int c=1; 
        for(int i=2;i<a;i++)
        {
             b=a%i;
             c=c*b; 
        } 
        if(a==1)
        cout<<"非質數"<<endl;
        else if(a==2) 
        cout<<"質數"<<endl;
        else if(c==0)
        cout<<"非質數"<<endl;        
        else
        cout<<"質數"<<endl;                       
    } 
   return 0;
}
 
 
逾時怎麼辦啊@@... 
#6992: Re:逾時怎麼辦啊??


passerr (20130326 0340 48)


只能先看題目討論串了吧

#6993: Re:逾時怎麼辦啊??


james35022000 (010243)


換另一種寫法....

#include <iostream>

using namespace std;

 

int main()

{

    int a;

    while(cin>>a)

    {

        if(a<2)

              {

                    cout<<"非質數" <<endl;

                    goto the_end; 

              } 

         for(int i=2;i<a;i++)

            if(a%i==0)

             {

                cout<<"非質數" <<endl;

                goto the_end;

             }            

            cout<<"質數" <<endl;

            the_end:

                    cout; 

    } 

   return 0;

}

 

還是逾時 !!


#6995: Re:逾時怎麼辦啊??


philip20336 (horba)


換另一種寫法....

#include

using namespace std;

 

int main()

{

    int a;

    while(cin>>a)

    {

        if(a<2)

              {

                    cout<<"非質數" <

                    goto the_end; 

              } 

         for(int i=2;i

            if(a%i==0)

             {

                cout<<"非質數" <

                goto the_end;

             }            

            cout<<"質數" <

            the_end:

                    cout; 

    } 

   return 0;

}

 

還是逾時 !!

用if試試 


#7095: Re:逾時怎麼辦啊??


d2513850 (林勇智)


換另一種寫法....

#include

using namespace std;

 

int main()

{

    int a;

    while(cin>>a)

    {

        if(a<2)

              {

                    cout<<"非質數" <

                    goto the_end; 

              } 

         for(int i=2;i

            if(a%i==0)

             {

                cout<<"非質數" <

                goto the_end;

             }            

            cout<<"質數" <

            the_end:

                    cout; 

    } 

   return 0;

}

 

還是逾時 !!


你必須先從2做到sqrt(n)

#7096: Re:逾時怎麼辦啊??


d2513850 (林勇智)


#include
using namespace std;

int main()
{
    int a,b;
    while(cin>>a)
    {
        int c=1; 
        for(int i=2;i
        {
             b=a%i;
             c=c*b; 
        } 
        if(a==1)
        cout<<"非質數"<
        else if(a==2) 
        cout<<"質數"<
        else if(c==0)
        cout<<"非質數"<
        else
        cout<<"質數"<
    } 
   return 0;
}
 
 
逾時怎麼辦啊@@... 
若輸入值為負整數或0或1或非數值資料時,直接送出"非質數"
#7105: Re:逾時怎麼辦啊??


akira0331 (小迷糊)


#include
using namespace std;

int main()
{
    int a,b;
    while(cin>>a)
    {
        int c=1; 
        for(int i=2;i
        {
             b=a%i;
             c=c*b; 
        } 
        if(a==1)
        cout<<"非質數"<
        else if(a==2) 
        cout<<"質數"<
        else if(c==0)
        cout<<"非質數"<
        else
        cout<<"質數"<
    } 
   return 0;
}
逾時怎麼辦啊@@... 

建議將for迴圈內容改寫成
for(i=2;i<=sqrt(a);i++)
{
      if(a%i==0) {c=0; break;}
}
使用sqrt(a)可以不用跑多餘的數值, 另外a%i==0就表是 a不是質數