bool is_prime(int m){ using namespace std; int r = 1000; int t = m-1; int s = 0; bool b = true; if(m==2){ return true; } if(m%2==0){ return false; } if(m==1){ return false; } while(t%2==0 || b){ b = false; s++; t=t/2; } for(int i=1;i<r+1;i++){ int a = 2+rand()%(m-2); int x = int(float(pow(float(a),float(t))))%m; if((x==1)||(x==m-1)){ continue; } for(int j=1;j<s;j++){ x=int(float(pow(float(x),2)))%m; if(x==1){ return false; } if(x==m-1){ break; } return false; } } return true; }