Показать сообщение отдельно

  #3  
Старый 15.11.2009, 01:58
Irdis
Участник форума
Регистрация: 06.02.2006
Сообщений: 177
Провел на форуме:
1576821

Репутация: 88
Отправить сообщение для Irdis с помощью ICQ
По умолчанию

winflip
Возрадуйся...
опа, у меня ещё и пост простой 101
Код:
#include <cmath>
#include <iostream>
bool is_prime(int);
int main(){
	using namespace std;
	//int a,b;
	for(int i=1;i<=1000;i++){
		if(is_prime(i)){
			cout << i << " ";
		}
	}  
	system("PAUSE");  
}
bool is_prime(int m){
	using namespace std;
	int r = 1000;
	int t = m-1;
	int s = 0;
	//bool b = true;
	if((m==2)||(m==3)){
		return true;
	}
	if(m%2==0){
		return false;
	}
	if(m==1){
		return false;
	}
	while(t%2==0){
		s++;
		t=t/2;
	}
	for(int i=1;i<r+1;i++){
		int a = 2+rand()%(m-3);
		bool next = false;
		long x = a;
		for (int i1=0;i1<t-1;i1++)
			x = (x*a)%m;
		
		//int x = (long(pow(float(a),float(t))))%m;
		if((x==1)||(x==m-1)){
			continue;
		}
		for(int j=1;j<s;j++)
		{
			x=(x%m)*(x%m)%m;
			if(x==1){
				return false;
			}
			if(x==m-1){
				next = true;
				break;
			}
		}
		if (!next)
				return false;

	}
	return true;
}
 
Ответить с цитированием