35 lines
881 B
Plaintext
35 lines
881 B
Plaintext
#include <basico.h>
|
|
|
|
#proto cálculodeMobius(_X_)
|
|
#synon _cálculodeMobius calcularMobius
|
|
|
|
algoritmo
|
|
|
|
imprimir ("Mobius numbers from 1..199\n")
|
|
i=0, s=1
|
|
iterar grupo( ++i, #(i<=199), calcular Mobius (i), \
|
|
solo si (#( iszero(s%20) ), NL;s=0 ), imprimir, ++s )
|
|
saltar
|
|
terminar
|
|
|
|
subrutinas
|
|
|
|
cálculo de Mobius (n)
|
|
si( #(n==0) ) ; tomar '" "'
|
|
sino si( #(n==1) ); tomar '" 1"'
|
|
sino; p=0
|
|
iterar para (i=1, #(i<=n+1), ++i)
|
|
si ( #( iszero(n%i) && isprime(i)) )
|
|
cuando ( #( iszero(n%(i*i)) ) ){
|
|
tomar '" 0"'; ir a (herejía) /* ¡! */
|
|
} ++p
|
|
fin si
|
|
siguiente
|
|
tomar si ( es impar(p), " -1", " 1" )
|
|
fin si
|
|
|
|
/* ¡Dios! ¡Purifica esta mierda! ----+ */
|
|
/* | */
|
|
herejía: /* <----------------------+ */
|
|
retornar
|