7
votes

Qu'est-ce que ce paineur python signifie?

s=p=1;exec"if s%p*s%~-~p:print`p`+','+`p+2`\ns*=p*p;p+=2\n"*999
Source.

2 commentaires

C'est pas syntaxique "sucre".


Python obscurci !! Qui a besoin de ça?


3 Réponses :


3
votes

Le code est itératif.

  1. s = p = 1 , initialisation
  2. exec "f (...)" * 999 est identique à pour i in gamme (999): f (...) ":
  3. s% p est un modulo
  4. p * s est une multiplication (x, y) , opération binaire
  5. ~ - ~ a expliqué Voici .
  6. \ n signifie pause-ligne,
  7. \ ns signifie une pause de ligne et s fait partie de la déclaration s * = p * p;
  8. p + = 2 signifie que l'affectation p = p + 2

    Espérons que d'autres personnes peuvent remplir les lacunes. Pour une enquête plus forte, quelle est son équation récursive?


0 commentaires

12
votes

Voici un désactivation de l'idée de base.

# p = 1; s = p
s=p=1
#exec"if s%p*s%~-~p:print`p`+','+`p+2`\ns*=p*p;p+=2\n"*999
for i in range(999):
    # s%p = remainder of s/p
    # ~p = 1s complement of p
    if s%p*s%~-~p:
        # `p` = repr(p)
        print`p`+','+`p+2`
    # s = s*p*p
    s*=p*p
    # p = p+2
    p+=2


7 commentaires

Pourriez-vous clarifier la partie "S% ~ -X", où X est déjà expliqué?


Apparemment, "~ - ~ x" signifie (1st COMP (- (1ère comp x)))) est-il seulement 1er complément puis prenant - et encore 1er complément ?


@Hh: le ~ -x fait fondamentalement un x-1 , mais comme cela nécessiterait ( et ) , c'est plus court;) Le S% est simplement un modulo


Fwiw, ~ - ~ p est égal à -p - 2 en raison de la fonctionnement du complément de 1 1, de sorte que le conditionnel fonctionne sur (s mod p) * ( s mod (-p-2))


Je viens de voir maintenant que la fonction réelle était ~ - ~ x au lieu de ~ -x . Dans ce cas, il est à peu près la même chose sauf que c'est une inversion et la différence est 2.


Qui est essentiellement (1 Comp (1 Comp (1 Comp X))) ~ 1 == -2; --2 == 2; ~ 2 == -3 juste une façon plus courte d'écrire (x + 2) , 4 caractères par rapport à 5 caractères. Même si le résultat finit par négativement, le mod sert toujours son objectif.


(...) est nécessaire en raison de l'ordre des opérations, négation> complément> MOD> (MULT, DIV)> (soustraction, addition) (en haut de la page ma tête)



7
votes

Il calcule et imprime les ensembles de nombres premiers twin. xxx

très cool :)


0 commentaires