C++实现费马小定理素数测试

2015-11-21 01:00:14 · 作者: · 浏览: 5
#include
  
   
#include
   
     #include
    
      #include
     
       #include
      
        using namespace std; long long qmod(int a, int b, int p) { long long res = 1; long long term = a%p; while(b) { if(b&1){ res = (res*term)%p; } term = (term*term)%p; b >>= 1; } return res; } bool is_prime(long long n) { int i; for(i = 0; i < 100; ++i) { if(qmod(1+rand()%(n-1),n-1, n) != 1) break; } if(i < 100) return false; else return true; } int main(void) { int n; while(cin >
> n) { if(is_prime(n)) cout << "yes" << endl; else cout << "no" << endl; } return 0; }