
15.11.2009, 01:58
|
|
Участник форума
Регистрация: 06.02.2006
Сообщений: 177
Провел на форуме: 1576821
Репутация:
88
|
|
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;
}
|
|
|