暗号総崩れ-素数判定が多項式時間で可能
■ このスレッドは過去ログ倉庫に格納されています
0143デフォルトの名無しさん
NGNGint is_a_sup_b(unsigned int n) {
int c, p=0, buf[32] = {0};
unsigned int i,d;
while (n && (n & 1)==0) {
++buf[p];
n >>= 1;
}
if (buf[p]) ++p;
i = 2;
d = 3;
while (d<=n) {
while (d<=n && (n % d)==0) {
++buf[p];
n /= d;
}
if (buf[p]) ++p;
d += i;
i = 6 - i; // 4 と 2 を交互に
}
if (n != 1)
++buf[p++];
c = buf[--p];
while (p--) if (buf[p] != c) return 0;
return 1;
}
a の b 乗の形であらわせるか?というのを求めます。
ただしaとbが具体的に何なのかは,んーと,簡単に分かるけど
ここでは求めてません。
あんまし試してないんで,検証よろしくです。
考え方はこう。
a^b は,素因数分解すると登場する因数の回数が揃ってるんですよね。
例えば 14^3 = 2744 は 2 * 2 * 2 * 7 * 7 * 7 で
2 も 7 も 3 回登場しますもんね。
#・・・今みんなが悩んでるのはここじゃないという罠?
■ このスレッドは過去ログ倉庫に格納されています