Data update
This commit is contained in:
parent
35bcdeebf8
commit
74c69a0df6
2427 changed files with 31826 additions and 3468 deletions
|
|
@ -0,0 +1,30 @@
|
|||
#include <basico.h>
|
||||
|
||||
#proto encontrarunMagnanimouspara(_X_)
|
||||
#synon _encontrarunMagnanimouspara siencontréunMagnanimousen
|
||||
|
||||
algoritmo
|
||||
|
||||
decimales '0'
|
||||
|
||||
res={}, i=0
|
||||
iterar grupo( ++i, #(length(res)<400), \
|
||||
i, meter según ( si encontré un Magnanimous en 'i', res ))
|
||||
|
||||
#(utf8("Primeros 45 números magnánimos:\n")), #(res[1:45])
|
||||
#(utf8("\n\nNúmeros magnánimos 241 - 250:\n")), #(res[241:250])
|
||||
#(utf8("\n\nNúmeros magnánimos 391 - 400:\n")), #(res[391:400]), NL
|
||||
luego imprime esto
|
||||
|
||||
terminar
|
||||
|
||||
subrutinas
|
||||
|
||||
encontrar un Magnanimous para(n)
|
||||
tn=n, d=0, i=0, pd=0
|
||||
iterar
|
||||
último dígito de 'tn', mover a 'd,tn'
|
||||
cuando ' tn ' { #( pd += ( d * 10^i ) ) }
|
||||
mientras ' #( tn && is prime(tn+pd) ); ++i '
|
||||
|
||||
retornar ' #(not(tn)) '
|
||||
22
Task/Magnanimous-numbers/BBC-BASIC/magnanimous-numbers.basic
Normal file
22
Task/Magnanimous-numbers/BBC-BASIC/magnanimous-numbers.basic
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
DIM Sieve% 1E5
|
||||
Prime%=2
|
||||
WHILE Prime%^2 < 1E5
|
||||
FOR S%=Prime%*2 TO 1E5 STEP Prime% Sieve%?S%=1 NEXT
|
||||
REPEAT Prime%+=1 UNTIL Sieve%?Prime%=0
|
||||
ENDWHILE
|
||||
Sieve%?1=1
|
||||
|
||||
PRINT "First 45 magnanimous numbers"
|
||||
REPEAT
|
||||
IF M% > 9 THEN
|
||||
FOR I%=LOGM% TO 1 STEP -1
|
||||
IF Sieve%?((M% DIV 10^I%) + (M% MOD 10^I%)) EXIT FOR
|
||||
NEXT
|
||||
ENDIF
|
||||
IF I% == 0 THEN
|
||||
N%+=1
|
||||
IF N% == 240 OR N% == 390 PRINT '"Magnanimous numbers ";N% + 1 "-";N% + 10
|
||||
IF N% < 46 OR (N% > 240 AND N% < 251) OR (N% > 390 AND N% < 401) PRINT;M% " ";
|
||||
ENDIF
|
||||
M%+=1
|
||||
UNTIL N% > 400
|
||||
45
Task/Magnanimous-numbers/EasyLang/magnanimous-numbers.easy
Normal file
45
Task/Magnanimous-numbers/EasyLang/magnanimous-numbers.easy
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
fastfunc isprim num .
|
||||
if num < 2
|
||||
return 0
|
||||
.
|
||||
i = 2
|
||||
while i <= sqrt num
|
||||
if num mod i = 0
|
||||
return 0
|
||||
.
|
||||
i += 1
|
||||
.
|
||||
return 1
|
||||
.
|
||||
func ismagnan n .
|
||||
if n < 10
|
||||
return 1
|
||||
.
|
||||
p = 10
|
||||
repeat
|
||||
q = n div p
|
||||
r = n mod p
|
||||
if isprim (q + r) = 0
|
||||
return 0
|
||||
.
|
||||
until q < 10
|
||||
p *= 10
|
||||
.
|
||||
return 1
|
||||
.
|
||||
proc magnan start stop . .
|
||||
write start & "-" & stop & ":"
|
||||
while count < stop
|
||||
if ismagnan i = 1
|
||||
count += 1
|
||||
if count >= start
|
||||
write " " & i
|
||||
.
|
||||
.
|
||||
i += 1
|
||||
.
|
||||
print ""
|
||||
.
|
||||
magnan 1 45
|
||||
magnan 241 250
|
||||
magnan 391 400
|
||||
23
Task/Magnanimous-numbers/GW-BASIC/magnanimous-numbers.basic
Normal file
23
Task/Magnanimous-numbers/GW-BASIC/magnanimous-numbers.basic
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
100 DEFINT A-Z
|
||||
110 CLS
|
||||
120 LET L = N
|
||||
130 LET R = 0
|
||||
140 LET S = 1
|
||||
150 IF L < 10 THEN GOTO 300
|
||||
160 LET R = R+(L MOD 10)*S
|
||||
170 LET L = L\10
|
||||
180 LET S = S*10
|
||||
190 LET P = R+L
|
||||
200 IF P = 1 THEN GOTO 280 ELSE FOR D = 2 TO SQR(P)
|
||||
210 IF P MOD D = 0 THEN GOTO 280
|
||||
250 NEXT D
|
||||
270 GOTO 150
|
||||
280 LET N = N+1
|
||||
290 GOTO 120
|
||||
300 LET I = I+1
|
||||
310 IF I = 1 THEN PRINT "1 - 45:" ELSE IF I = 241 THEN PRINT : PRINT "241 - 250:"
|
||||
320 IF I <= 45 OR I > 240 THEN PRINT N,
|
||||
330 LET N = N+1
|
||||
340 IF I < 250 THEN GOTO 120
|
||||
350 PRINT
|
||||
360 END
|
||||
42
Task/Magnanimous-numbers/SETL/magnanimous-numbers.setl
Normal file
42
Task/Magnanimous-numbers/SETL/magnanimous-numbers.setl
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
program magnanimous;
|
||||
n := -1;
|
||||
loop for i in [1..400] do
|
||||
loop until magnanimous(n) do n +:= 1; end loop;
|
||||
|
||||
case i of
|
||||
(1): print("1 - 45:");
|
||||
(241): print; print("241 - 250:");
|
||||
(391): print; print("391 - 400:");
|
||||
end case;
|
||||
|
||||
if i in [1..45] or i in [241..250] or i in [391..400] then
|
||||
putchar(lpad(str n, 7));
|
||||
if i mod 5 = 0 then print; end if;
|
||||
end if;
|
||||
end loop;
|
||||
|
||||
proc magnanimous(n);
|
||||
return forall k in splitsums(n) | prime(k);
|
||||
end proc;
|
||||
|
||||
proc splitsums(n);
|
||||
s := str n;
|
||||
return [val s(..i) + val s(i+1..) : i in [1..#s-1]];
|
||||
end proc;
|
||||
|
||||
proc prime(n);
|
||||
if n<2 then return false;
|
||||
elseif even n then return(n = 2);
|
||||
elseif n mod 3=0 then return(n = 3);
|
||||
else
|
||||
d := 5;
|
||||
loop while d*d <= n do
|
||||
if n mod d=0 then return false; end if;
|
||||
d +:= 2;
|
||||
if n mod d=0 then return false; end if;
|
||||
d +:= 4;
|
||||
end loop;
|
||||
return true;
|
||||
end if;
|
||||
end proc;
|
||||
end program;
|
||||
Loading…
Add table
Add a link
Reference in a new issue