|
|
|
| Имя участника ыыыы=)
С условиями задачи можно ознакомится по ссылке.
number.php
<?php ##Скрипт формирует самое большое простое число и записывает его в файл.
//Убираем ограничение на время выполнения скрипта,замечаем время и начинаем возводить 2 в 43112609 степень
set_time_limit(0);
$start_time=microtime(true);
$number=2;
//В цикле умножаем число 2 на само себя требуемое число раз
for($i=43112609;$i>1;$i--)
{
//Умножаем методом "столбика",семью восемь - пятьдесят шесть,шесть пишем,пять в уме =))
//В начале каждой итерации обнуляем переменные,в конце итерации запоминаем получившийся результат
$inmem=0;
$result="";
//По очереди,начиная с конца,вытаскиваем по цифре,умножаем на 2,"пишем" в $result,"запоминаем" в $inmem
for($x=1;$x<=strlen($number);$x++)
{
$temp=substr($number,strlen($number)-$x,1)*2+$inmem;
//Если итерация последнняя,дописываем в $result,если нет,то разделяем число.
if($x==strlen($number))
$result=$temp.$result;
else
{
$result=substr($temp,-1).$result;
$inmem=$temp>9 ? substr($temp,0,strlen($temp)-1) : 0;
}
}
$number=$result;
}
//Вычитаем из числа 1
$last_dig=substr($number,-1)-1;
$number=substr($number,0,$x-1).$last_dig;
//Формирование числа завершено,считаем время,далее записываем в файл,также засекая время
$end_time=microtime(true);
$time=$end_time-$start_time;
echo "Время формирования числа:$time секунд.<br />";
$start_time=microtime(true);
$f=fopen("number.txt","w+") or die("Ошибка открытия файла");
fwrite($f,$number);
fclose($f);
$end_time=microtime(true);
$time=$end_time-$start_time;
echo "Время записи числа в файл:$time секунд.<br />";
?>
|
num_digital.php
<?php ##Подсчет кол-ва цифр в самом большом простом числе
//Одна цифра занимает один байт,слеодвательно размер файла в байтах и будет ответом.
$num_digital=filesize("number.txt");
echo $num_digital ? "Количество цифр в числе: $num_digital." : "Ошибка!";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(13.10.2008 в 00:25)
| | Ответ правильный. Однако, даже запуская скрипт вне браузера и выставляя ему повышенный приоритет практически невозможно дождаться. Это связана с интерпретируемостью языка PHP и представлением строк - лучше перекладывать рутинные операции с большими числами на быстрые и специализированные средства, в частности на расширение GMP. | |
|
|
|