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;
}