3問目。
効率が悪いし、最悪の場合の処理時間がΟ(n^2)。
効率のよい実装をもちょっと考えれるようになりたいです。
#include <iostream> #include <time.h> using namespace std; unsigned int primeCall(unsigned NM){ unsigned int prime[50000]; unsigned int box[100000]; unsigned int p=0; for(p=0;p<NM;p++)prime[p]=0; prime[0]=2; box[0]=0; for(p=1;p<=NM;p++) { for(int i=prime[p-1];i<10000;i++) { if((i%prime[p-1])==0)box[i]=0; else if (box[i]!=0)box[i]=i; } for(int i=2;i<10000;i++) { if(box[i]!=0) { prime[p]=i; break; } } } return prime[NM]; } int main() { unsigned long long int w=600851475143; for(int i=0;i<50000;i++){ if(w==1){ cout<<"it is finish!"<<endl; break; } while(w%primeCall(i)==0) { w=w/primeCall(i); cout<<primeCall(i)<<endl; } } cout<<"it stopped!"<<endl; }