A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Tutorial PARI/GP (II)

Sab

23

Abr

2005


15:45

(3 votos, média 5.00 de 5) 



  • Funções aritméticas elementares

Como a PARI foi projetada para teóricos dos números, não é de se surpreender que ofereça um grande número de funções aritméticas (veja a lista delas digitando ?4). Já vimos várias delas, como a factor. Saiba que a função factor não lida apenas com números inteiros, mas também com polinômios (univariados). Digite, por exemplo, factor(x^200 - 1). Você também pode pedir para fatorar um módulo polinomial a primo p (factormod) e até mesmo num campo finito que não seja um campo primo (factorff).

Evidentemente existem funções para computar o máximo divisor comum (gdc), o máximo divisor comum estendido (bezout), resolver o teorema chinês dos restos (chinese) e assim por diante.

Além das facilidades de fatoração, existem algumas funções relacionadas a testes de primalidade, como isprime, ispseudoprime, precprime e nextprime. Como foi mencionado anteriormente, apenas pseudoprimos fortes são produzidos pelas duas primeiras funções (elas passam o teste ispseudoprime). Os testes de primalidade mais sofisticados de isprime, sendo muito mais lentos, não são aplicados como default.

As funções aritméticas multiplicativas também estão presentes: a função µ de Möbius (moebius), a função φ de Euler (eulerphi), as funções ω e Ω (omega e bigomega), as funções σk (sigma) que calculam a k-ésima potência dos divisores positivos de um dado inteiro, etc.

Você pode calcular frações contínuas. Por exemplo, entre com \p 1000, depois com contfrac(exp(1)) para obter a fração contínua da base dos logaritmos naturais que, como se pode ver, obedece a um padrão muito simples.

Em muitos casos, queremos realizar determinada tarefa somente se uma determinada condição aritmética for satisfeita. A GP oferece as seguintes funções: isprime, como mencionado acima, issquare, isfundamental para testar se um inteiro é um discriminante fundamental (isto é, 1 ou o discriminante de um campo quadrático), e os loops forpeimw, fordiv e sumdiv. Imagine que se queira calcular o produto de todos os divisores positivos de um inteiro positivo n. A maneira mais fácil é escrever p = 1; fordiv(n,d, p *= d); p. A notação p *= d é apenas uma forma abreviada de p = p * d.

Se quisermos saber a lista dos números primos p menores do que 1000, de modo que 2 seja uma raiz primitiva módulo p, poderíamos escrever forprime(p=3,1000, if (znprimroot(p) == 2, print(p))). Observe que isto pressupõe que znprimroot retorne a menor raiz primitiva e este é efetivamente o caso. Se soubéssemos disso, poderíamos ter escrito forprime(p=3,1000, if (znorder(Mod(2,p)) == p-1, print(p))) (que é mais rápido porque apenas calculamos a ordem de 2 em Z/pB ao invés de procurar por um gerador testando elementos sucessivos cujas ordens também precisam ser calculadas).

Acho que vou parar por aqui, por que já tem material suficiente para fundir a cabeça da maioria das pessoas smile

vovo vovó Vicki

Vadim Logofet Sberbankчугунная сковорода мелитопольтелефон никас александр лобановскийapple ipadвозрождение мунтян телефон никас

Informações adicionais