Monday, October 1, 2012

Bilangan Prima

#include <iostream.h>
#include <math.h>

class prima{
    friend istream& operator>>(istream& , prima&);
    friend ostream& operator<<(ostream& , prima&);
public:
    prima(){awal=3; akhir=50;}
    int aprima(int n);
private:
    int awal, akhir;
};

istream& operator>>(istream& masukan, prima& bil){
    cout<<"mulai dari :"; masukan>>bil.awal;
    cout<<"berakhir pada:";masukan>>bil.akhir;
    return masukan;
}
ostream& operator<<(ostream& keluaran, prima& bil){
    int banyak = 0;
    keluaran<<" bilangan prima antara "<<bil.awal;
    keluaran<<" dan " << bil.akhir<<endl;
    for (int k=bil.awal; k<=bil.akhir;k++){
        if (bil.aprima(k)){
            cout<<k<<endl;
            banyak+=1;
        }
    }
    keluaran<<banyak<<"bilangan prima yang ditemukan antara ";
    keluaran<<bil.awal<<" dan "<<bil.akhir<<endl;
    return keluaran;
}
int prima::aprima(int n){
    if(n<2){
        return false;
    }
    else if(2==n){
        return true;
    }
    else if(n%2==0){
        return false;
    }
    else{
        int limit=int(sqrt(n)+1);
        int pembagi=3;
        while (pembagi<=limit){
            if(n%pembagi==0){
                return false;
            }
            pembagi+=2;
        }
        return true;
    }
}
void main(){
    prima x;
    cin>>x;
    cout<<x;
}

No comments: