Data update
This commit is contained in:
parent
81fd053722
commit
52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions
54
Task/Chowla-numbers/PascalABC.NET/chowla-numbers.pas
Normal file
54
Task/Chowla-numbers/PascalABC.NET/chowla-numbers.pas
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
function chowla(n: Integer): Integer;
|
||||
begin
|
||||
result := 0;
|
||||
var i := 2;
|
||||
while i * i <= n do
|
||||
begin
|
||||
if n mod i = 0 then
|
||||
result += i + (if i = n div i then 0 else n div i);
|
||||
i += 1
|
||||
end;
|
||||
end;
|
||||
|
||||
function sieve(limit: Integer): array of Boolean;
|
||||
begin
|
||||
result := new Boolean[limit];
|
||||
for var i := 3 to limit div 3 step 2 do
|
||||
if not result[i] and (chowla(i) = 0) Then
|
||||
for var j := 3 * i to limit step 2 * i do
|
||||
result[j] := true;
|
||||
end;
|
||||
|
||||
begin
|
||||
for var i := 1 To 37 do
|
||||
WriteLn('chowla(', i, ') = ', chowla(i));
|
||||
|
||||
var count := 1;
|
||||
var limit := 10_000_000;
|
||||
var power := 100;
|
||||
var c := sieve(limit);
|
||||
for var i := 3 To limit Step 2 do
|
||||
begin
|
||||
if not c[i] Then count += 1;
|
||||
if i = power - 1 Then begin
|
||||
WriteLn('Count of primes up to ', power:8, ' = ', count);
|
||||
power *= 10;
|
||||
end;
|
||||
end;
|
||||
|
||||
count := 0;
|
||||
limit := 35_000_000;
|
||||
var k := 2; var kk := 3;
|
||||
while True do
|
||||
begin
|
||||
var p := k * kk;
|
||||
if p > limit Then break;
|
||||
if chowla(p) = p - 1 Then begin
|
||||
WriteLn(p:8, ' is a number that is perfect');
|
||||
count += 1;
|
||||
end;
|
||||
k := kk + 1;
|
||||
kk += k;
|
||||
end;
|
||||
WriteLn('There are ', count, ' perfect numbers <= 35,000,000')
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue