|
|
|
|
|
для: cheops
(13.10.2008 в 00:44)
| | - | |
|
|
|
|
|
|
|
для: cheops
(13.10.2008 в 00:25)
| | Совершенно правильный ответ, причем судя по всему один из самых быстрых в PHP. Альтернативный вариант с использованием GMP-расширения, основанный на формировании строки из единиц 111 ... 111 с последующим преобразованием их в десятичное число занимает в три раза больше времени.
Скрипт безупречный - правильный, быстрый, маленький, легко читается и без хитростей. Браво. Вас могло бы обыграть только решение, где длина десятичного числа вычисляется аналитически, а не в лоб на основании сгенерированного файла. | |
|
|
|
|
|
|
| Имя участника Eugene77
С условиями задачи можно ознакомится по ссылке.
<?php
// Вывод в файл (?file=yes) и определение длины (?digits=yes) самого большоги известного простого числа. Author => "Eugene77"
if($_GET['file']!='yes' and $_GET['digits']!='yes') exit('Надо указать ?file=yes или/и ?digits=yes <br>');
set_time_limit(300);
$t = time();
// В начале получим число содержащее 43112609 нулей и одну единицу в начале (в двоичном исчислении)
$f = gmp_pow(2, 43112609);
// Вычитая 1 получим число состоящее только из 43112609 бинарных единиц
$f = gmp_sub($f, 1);
// Превратим его в строку
$st = gmp_strval($f);
// Освободим память и выведем информацию о времени работы
unset($f);
$t_form = time();
echo "<br>Потребовалось ".($t_form-$t). " секунд для получения десятичного представления числа<br>";
if($_GET['file']=='yes'){
// Запишем число в файл
file_put_contents("longest_prime_number.txt", $st) or exit("<br> Не могу записать файл <br>");
// Выведем информацию о времени работы
$t_output = time(); echo "<br>Потребовалось ".($t_output - $t_form). " секунд для записи в файл десятичного представления числа<br>";
}
if($_GET['digits']=='yes'){
// Определим длину
$len = strlen($st);
echo "<br>Длина десятичного представления числа $len <br>";
// Выведем информацию о времени работы
$t_output = time(); echo "<br>Потребовалось ".($t_output - $t_form). " секунд для определения длины десятичного представления числа<br>";
}
echo "<br>Потребовалось ".($t_output - $t). " секунд для всей работы скрипта<br>";
?>
|
| |
|
|
|
|