我在验证有限域 GF(13) 中的点是否在椭圆曲线 y^2 = x^3 + x + 1 上时遇到了这个问题:首先我将循环边界设置为 i<2,结果是正确的。
#include <stdio.h>
#include <math.h>
void main ()
{
int a[13], b[13];
int j, i, m, k = 0;
for (i = 0; i < 2; i++)
for (j = 0; j < 13; j++)
if ((i * i * i + i + 1) % 13 == (j * j) % 13) {
a[k] = i;
b[k] = j;
k++;
}
printf ("\n There are %d points on the curve\nThe points are: ", k);
for (m = 0; m < k; m++)
printf ("\nx=%d,y=%d \n", a[m], b[m]);
}
结果是链接1
在我更改i<2
为之后i<13
,
for(i=0;i<13;i++)
前 4 点已更改:链接 2