整数 ,
に対し,
を満たす整数
があるか
どうか調べたい. 明らかに,
に対して調べればよいので,
次のプログラムが書ける.
/* A が平方剰余なら 1, 非剰余なら 0 を返す */ def q_res(A,P) { for ( I = 0; I < P; I++ ) { R = (I^2-A) % P; if ( R == 0 ) /* みつけた */ return 1; } return 0; }このプログラムは次のようにも書ける.
def q_res(A,P) { for ( I = 0; I < P; I++ ) { R = (I^2-A) % P; if ( R == 0 ) break; } if ( I < P ) return 1; else return 0; }違いは, 条件を満たす
実は, 見つからなかった場合には I を 1 増やすので I==P となっているが, break で脱出した場合には I は当たり の値のままである. よって上のプログラムで正しく動作する.