#2192: 奇怪~他只出現質數


joleen60626 (香蕉)


#include<iostream>
#include<cmath>
using namespace std;

int main(){
    int a;
    cin>>a;
    for(int i=3;i<sqrt(a);i++){
            if(a%i==0){
                       cout<<"非質數"<<endl;
            }
             if(a%i!=0){
                       continue;
                       }
            }
            cout<<"質數"<<endl;
    system("pause");
    return 0;
}#include<iostream>
#include<cmath>
using namespace std;

int main(){
    int a;
    cin>>a;
    for(int i=3;i<sqrt(a);i++){
            if(a%i==0){
                       cout<<"非質數"<<endl;
            }
             if(a%i!=0){
                       continue;
                       }
            }
            cout<<"質數"<<endl;
    system("pause");
    return 0;
}

 

我的想法是...

一遇到可以整除a的數就輸出非質數

可是我輸入14他還是輸出質數耶

怎麼會這樣?

#2193: Re:奇怪~他只出現質數


morris1028 (碼畜)


#include
#include
using namespace std;

int main(){
    int a;
    cin>>a;
    for(int i=3;i            if(a%i==0){
                       cout<<"非質數"<            }
             if(a%i!=0){
                       continue;
                       }
            }
            cout<<"質數"<    system("pause");
    return 0;
}#include
#include
using namespace std;

int main(){
    int a;
    cin>>a;
    for(int i=3;i            if(a%i==0){
                       cout<<"非質數"<            }
             if(a%i!=0){
                       continue;
                       }
            }
            cout<<"質數"<    system("pause");
    return 0;
}

 

我的想法是...

一遇到可以整除a的數就輸出非質數

可是我輸入14他還是輸出質數耶

怎麼會這樣?

sqrt(14)=3....

因為你跑的範圍是3~3 當然沒有囉  最好是從2開始跑然後<=sqrt(N)

25的話 會變成2~4 所要要等於 →2~5 就會判斷不是了

#2240: Re:奇怪~他只出現質數


joleen60626 (香蕉)


#include
#include
using namespace std;

int main(){
    int a;
    cin>>a;
    for(int i=3;i            if(a%i==0){
                       cout<<"非質數"<            }
             if(a%i!=0){
                       continue;
                       }
            }
            cout<<"質數"<    system("pause");
    return 0;
}#include
#include
using namespace std;

int main(){
    int a;
    cin>>a;
    for(int i=3;i            if(a%i==0){
                       cout<<"非質數"<            }
             if(a%i!=0){
                       continue;
                       }
            }
            cout<<"質數"<    system("pause");
    return 0;
}

 

我的想法是...

一遇到可以整除a的數就輸出非質數

可是我輸入14他還是輸出質數耶

怎麼會這樣?

sqrt(14)=3....

因為你跑的範圍是3~3 當然沒有囉  最好是從2開始跑然後<=sqrt(N)

25的話 會變成2~4 所要要等於 →2~5 就會判斷不是了



 

#include<iostream>
#include<cmath>
using namespace std;

int main(){
    int a;
    while(cin>>a){
    for(int i=2;i<=sqrt(a);i++){
            if(a%i==0)
                       cout<<"非質數"<<endl;
                       break;    //要怎麼讓它在這裡就重新回到while迴圈?要怎麼寫?break好像只會跳出一層迴圈耶
                                
             if(a%i>0)
                      continue ;
                     
                      }
            cout<<"質數"<<endl;
           
            }
    return 0;
    
  }