51 lines
983 B
Plaintext
51 lines
983 B
Plaintext
MODULE Pernicious;
|
|
FROM FormatString IMPORT FormatString;
|
|
FROM Terminal IMPORT WriteString,WriteLn,ReadChar;
|
|
|
|
PROCEDURE IsPrime(x : LONGINT) : BOOLEAN;
|
|
VAR i : LONGINT;
|
|
BEGIN
|
|
IF x<2 THEN RETURN FALSE END;
|
|
FOR i:=2 TO x-1 DO
|
|
IF x MOD i = 0 THEN RETURN FALSE END
|
|
END;
|
|
RETURN TRUE
|
|
END IsPrime;
|
|
|
|
PROCEDURE BitCount(x : LONGINT) : LONGINT;
|
|
VAR count : LONGINT;
|
|
BEGIN
|
|
count := 0;
|
|
WHILE x>0 DO
|
|
x := x BAND (x-1);
|
|
INC(count)
|
|
END;
|
|
RETURN count
|
|
END BitCount;
|
|
|
|
VAR
|
|
buf : ARRAY[0..63] OF CHAR;
|
|
i,n : LONGINT;
|
|
BEGIN
|
|
i := 1;
|
|
n := 0;
|
|
WHILE n<25 DO
|
|
IF IsPrime(BitCount(i)) THEN
|
|
FormatString("%l ", buf, i);
|
|
WriteString(buf);
|
|
INC(n)
|
|
END;
|
|
INC(i)
|
|
END;
|
|
WriteLn;
|
|
|
|
FOR i:=888888877 TO 888888888 DO
|
|
IF IsPrime(BitCount(i)) THEN
|
|
FormatString("%l ", buf, i);
|
|
WriteString(buf)
|
|
END;
|
|
END;
|
|
|
|
ReadChar
|
|
END Pernicious.
|