10/06/22 18:13:59
>>360
高速化を考えるんだったら、そのマシンや環境がどうかで大きく変わるし、
それ以前に最大桁が幾らかでも手法は色々考えられる。
例えばその辺のWindowsPCとかなら、そこそこメモリも使えるから、
#include <stdio.h>
#define N 1000000
int main(void)
{
static long table[N];
long i, j;
for (i = 1; i < N; i++)
for (j = i+i; j < N; j += i)
table[j] += i;
for (i = 0; i < N; i++) {
j = table[i];
if (j <= N && i < j && table[j] == i)
printf("%ld %ld\n", i, j);
}
return 0;
}