PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 96


printf STDERR "bignum: %s would become %s\n", $n, $n+0 if $opt_d;

load_biglib();

$n = Math::BigInt->new($orig); } printf "%-10s ", $n;

Я $sqi равно квадрату $i. Используется тот факт, # что ($i + 1) •* 2 == $i •* 2 + 2 * $i + 1. for (my ($i, $sqi) = (2, 4); $sqi <= $n; $sqi += 2 * $i ++ + 1) { while ($n % $i == 0) {

$n /= $i;

print STDERR "" if $opt_d;

$factors


2.19. Программа: разложение на простые множители   93

if ($n != 1 44 $n != long) { $factors{$n}++ } if (! «factors) {

print "PRIME\n";

next ARG; >

for $factor ( sort { $a <=> $b } keys %factors ) { print "$factor";

if ($factors{$factor} > 1)  {

print "*«$factors{$factor}";

print  "  "; } print "\n";

# Имитирует use, но во время выполнений sub loadjaglib {

require Math::BigInt;

Math.:8iglnt->import();


Дата и время

Не следует требовать, чтобы время в секундах с начала

эпохи точно соответствовало количеству секунд между

указанным временем и началом эпохи.

Стандарт IEEE 1003 1b-1993 (POSIX) раздел В.2.2.2

Введение

Время и дата — очень важные величины, и с ними необходимо уметь работать. «Сколько пользователей регистрировалось за последний месяц?», «Сколько се­кунд я должен проспать, чтобы проснуться к полудню?» и «Не истек ли срок дей­ствия пароля данного пользователя?» — вопросы кажутся тривиальными, однако ответ на них потребует на удивление нетривиальных операций.

В Perl моменты времени представлены в виде интервалов, измеряемых в секун­дах с некоторого момента, называемого началом эпохи. В UNIX и многих других системах начало эпохи соответствует 00 часов 00 минут 1 января 1970 года по Гринвичу (GMT1). На Macintosh дата и время измеряется в местном часовом поясе. Функция gmtime возвращает правильное время по Гринвичу, основанное на смеще­нии местного часового пояса. Помните об этом, рассматривая рецепты этой гла­вы. На Macintosh количество секунд с начала эпохи позволяет отсчитывать вре­мя в интервале от 00:00 1 января 1904 года до 06:28:15 6 февраля 2040 года.




Начало  Назад  Вперед