2 ? $argv[2] : 100; printf("%0.9f\n", energy($bodies)); $i = 0; do { foreach ($pairs as $k => $p) { $a = $p[0]; $b = $p[1]; $dx = $a[0] - $b[0]; $dy = $a[1] - $b[1]; $dz = $a[2] - $b[2]; $dist = sqrt($dx * $dx + $dy * $dy + $dz * $dz); $mag = 0.01 / ($dist * $dist * $dist); $mag_a = $a[6] * $mag; $mag_b = $b[6] * $mag; $a[3] -= $dx * $mag_b; $a[4] -= $dy * $mag_b; $a[5] -= $dz * $mag_b; $b[3] += $dx * $mag_a; $b[4] += $dy * $mag_a; $b[5] += $dz * $mag_a; $pairs[$k][0] = $a; $pairs[$k][1] = $b; } foreach ($bodies as $k => $b) { $b[0] += 0.01 * $b[3]; $b[1] += 0.01 * $b[4]; $b[2] += 0.01 * $b[5]; $bodies[$k] = $b; } } while (++$i < $n); printf("%0.9f\n", energy($bodies)); printf("count=%d, %0.9f\n", $n, microtime(true) - $begin); }