История №232690
На нем раздел из 150064034 блоков, каждый блок по 512 байт, т. е. на
разделе 75032017 килобайт.
Пытаюсь немного оптимизировать тестирование и подбираю размер блока для
чтения (в килобайтах), чтобы, во-первых, блок был размером побольше
килобайта, и во-вторых, чтобы размер блока был кратен размеру раздела.
Грубо говоря: пытаюсь разложить число 75032017 на простые множители (для
посвященных: подбираю параметры bs и count команды dd).
Сижу, значит, перебираю по-памяти простые числа: 3, 5, 7, 11, 13, 17,
19, 23, 29, 31, 37, 41, 43... сначала тупо срабатывает школьная таблица
умножения до 100... Дохожу до 101, начинают срабатывать другие правила -
если сумма цифр делится на 3, то и число тоже делится на 3, значит не
prime, нечетные чила, делящиеся на 5, понятно дело, пропускаю не
задумываясь... Дохожу до числа 199, мое число 75032017 так до сих пор
нихрена ни на что не поделилось. С подбором простых чисел уже начались
сложности...
Как всегда, помог гугл. Зашел на сайт http://primes.utm.edu, чтобы
шпаргалок качнуть (список простых чисел). На всякий случай проверил
число 75032017. Оказалось, что prime... по списку, в 6-м миллионе.
Под впечатлением найденного, протестировал чтение блоками по килобайту в
количестве 75032017 штук.
Винт глюканул.
ANT• 17.06.06 16:09
А мне понравилось! Вот так вот просто наткнуться на простое - это круто!
Ильязыч• 03.06.06 13:05
Написание программы для решения этой задачи на Паскале у меня заняло три минуты.
Учи программирование.Ответом будет 0.
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var i,k,j,n,s,m:longint;
begin
{ TODO -oUser -cConsole Main : Insert code here }
writeln('Vvedite chislo n (Devyat ili menshe razrydov)');
readln(n);
s:=0;
m:=0;
for i:=2 to n-1 do
begin //1
if n mod i = 0 then
begin
m:=m+1;
if m=1 then
writeln('Prostie deliteli chisla n');
k:=0;
for j:=2 to i-1 do
if i mod j =0 then
k:=k+1;
if k=0 then
begin
write(i,' ');
k:=0;
s:=s+1;
end;
end;
end;
writeln;
write('Kolichestvo prostish delitelei=',s);
readln
end.
Постоянный посетитель• 03.06.06 12:38
Для справки: Арола - малолетняя блондинка, лет 18-ти, не обижайте ее.
acheron• 03.06.06 09:19
А что нельзя было сделать, скажем, bs=1000K count=75032 , а затем
bs=1K skip=75032000 ? Или так дольше?
Сижу, тестирую глючный винт.
...
Винт глюканул.
;)))
А знал бы наизусть таблицу простых чисел хотя бы до 8862, мог бы и не спрашивать у гугла ;) Был бы вообще молодец. Ну а в принципе, конечно, вот так наткнуться на простое - это уметь надо ;)