[ 簡単な説明 ]
素数かどうかを判定して、素数の場合1を、合成数の場合0を返します。 |
/* lprime_chk.c */ #include "longint.h" /* prime check 0 : Not Prime , 1 : Prime */ int lprime_chk(LINT x) { LINT i, r, w; if(x.len == 0 || x.sign == -1) { fprintf(stderr, "Error : Illegal parameter in lprime_chk()\n"); return 0; } if(x.len == 1 && x.num[1] < 4) return 1; if(x.num[1] % 2 == 0) return 0; i.len = 1; i.sign = 0; i.num[1] = 3; while(1) { w = ldivide(x, i, &r); if(r.len == 0) return 0; if(lcmp(i, w) >= 0) return 1; alinc(&i, 2); } } |