Operações com Números Inteiros
1. Operações Aritméticas no Maple V
As operações aritméticas no Maple V são definidas de acordo com as convenções matemáticas
padrão. O Maple V é um programa interativo que permite realizar de maneira simples uma grande
variedade de operações matemáticas. Também possui outras propriedades que o transformam em
um programa extremamente complexo e aplicável a um amplo âmbito de matérias, desde
matemática mais teórica à mais aplicada.
Uma das primeiras aplicações do Maple V é seu uso para a realização de operações aritméticas,
como se fosse uma calculadora convencional, porém com uma importante diferença: a precisão de
seus cálculos. Pode realizar as operações de forma exata, sendo o próprio usuário quem especifica o
grau de precisão que deseja. Esta precisão ilimitada é a característica que diferencia o Maple V de
outros programas de cálculo numérico, onde a longitude de palavra com a qual trabalha o
ordenador, determina a precisão, sendo assim se converte em algo inerente ao hardware e não
modificável. esta contribuição é uma das mais importantes do cálculo simbólico.
O Maple V assume as operações aritméticas habituais de soma, diferença, produto, divisão e
potência, com a hierarquia habitual entre elas
x+y
Soma
x-y
Diferença
x*y
Produto
x/y
Divisão
x^y ou x**y
Potência
x!
Fatorial
Para somar dois números, digite simplesmente o primeiro número, um sinal de mais (+) e o segundo
número. Pode incluir tranqüilamente espaços antes e depois do sinal de mais, para que o input seja
mais legível.
> 53+78;
Como na maioria das linguagens, o produto de a vezes c, se escreve como a*c.
> 127*9721;
Diferentemente de uma calculadora, quando trabalha com inteiros, o Maple V mostra o resultado
exato mesmo quando tem mais dígitos que os que caberiam em uma linha da tela. O MapleV
devolve o número exato de 34^56.
> 34^56;
Estas operações são utilizadas para realizar cálculos mais ou menos complexos com o Maple V. Ao
combinar várias operações em uma mesma instrução, deve se levar em conta os critérios de
prioridade habitais entre elas, que determinam a ordem de avaliação da operação. Veja o seguinte
exemplo:
> 2*3^2+(5-2)*3;
Levando em conta a prioridade dos operadores, o primeiro a ser avaliado é o de potenciação. A
ordem de avaliação normal pode se alterar agrupando expressões entre parênteses.
Além destes operadores aritméticos, o Maple V é dotado de um conjunto de funções básicas, e o
usuário pode definir também suas próprias funções. Tanto os operadores como as funções que leva
incorporadas o Maple V, podem ser aplicadas sobre constantes simbólicas ou números.
Exercício 1. Realizar as seguintes operações:
a) (-2+3-5)(4-3+2):(15+4-21)
3
b)  2 − 3 ( 4 − 3 + 5 )  [(3-2)+(6-8-5)]
c) 5-[4-3+2x7+5]+[ ( 3 − 6 )
2
( 7 − 9)
2
]
d) 6-4x3:2-7x2+8-6:3- 52 +3
e) [5+3x2:6-4].[4:2-3+6]:[7-8:2-2]^2
Colocamos no Maple V as operações anteriores da seguinte maneira:
> ((-2+3-5)*(4-3+2))/(15+4-21);
> ((2-3)*(4-3+5))^3*(3-2+6-8-5);
> 5-(4-3+2*7+5)+(3-6)^2*(7-9)^2;
> 6-(4*3)/2-7*2+8-6/3-5^2+3;
> ((5+(3*2)/6-4)*(4/2-3+6))/(7-8/2-2)^2;
Exercício 2. Realizar as seguintes operações:
1) −6ab + 3a 2 + 2ab
2) 6a 2 + 2a − b 2 + 3a − 5a 2 + b 2
3) 6ab − 2a 2 − 4ab + 3a 2
Colocamos no Maple V as operações anteriores da seguinte maneira:
> 6*a*b+3*a^2+2*a*b;
> 6*a^2+2*a-b^2+3*a-5*a^2+b^2;
> 6*a*b-2*a^2-4*a*b+3*a^2;
A finalidade deste exercício é deixar clara a facilidade do Maple para a simplificação direta de
expressões simples.
Exercício 3. Sendo H = 3 a^2 - 2a + 7, F = 6 a^3 - 5a +2 e G = 5 a^2 + 4a-3, Calcular:
1) H + F + G
2) H - F + G
3) H - F - G
Colocamos no Maple V as operações anteriores da seguinte maneira:
> H:=3*a^2-2*a+7;F:=6*a^3-5*a+2;G:=5*a^2+4*a-3;
> H+F+G;
> H-F+G;
> H-F-G;
2. Números Inteiros
O programa do Maple V pode trabalhar em diferentes plataformas. Dependendo da potência de
software e hardware das mesmas, o programa trabalha-rá com mais ou menos precisão. Esta
precisão com a qual o Maple V trabalha faz que não exista nenhuma limitação quanto ao tamanho
máximo de números inteiros que é capaz de trabalhar; a limitação mais típica é a disponibilidade de
memória do ordenador com que se trabalha. Sendo assim, todas as operações usuais com números
inteiros se realizam de forma exata, independentemente do tamanho que tenha o resultado. O limite
é de aproximadamente 500.000 dígitos. Por exemplo:
> 7^400;
Caso queiramos saber o número de dígitos de um resultado tão grande como o anterior, utilizamos o
comando lenght, cuja síntese é:
Lentgh(inteiro)
Devolve o número de dígitos do inteiro
aso o aplicamos na saída anterior, teremos:
> length("");
3. Funções mais Comuns com Argumento Inteiro
As funções com argumento inteiro que se apresentarão na continuação se classificarão em dois
grupos. O primeiro é possível de ser acessado diretamente. para acessar o outro grupo é necessário,
primeiro, carregar a livraria do Maple numtheory mediante o comando with(numtheory).
Entre as funções com argumento inteiro mais típicas relativas ao primeiro grupo, destacam-se as
seguintes:
Função
Significado
sing(n)
Signo de n (1 se n>0, -1 se n<0, n real)
n!
Fatorial de n (n!=n(n-1)(n-2)....2.1))
binomial(n,m)
Número combinatório n sobre m:(n!/(m!(m-n)!))
bernoulli(n)
Enésimo número de Bernoulli Bn:
euler(n)
Enésimo número de Euler En:
igcd(n1,n2,...,nk)')
Máximo divisor comum de k números
ilcm(n1,n2,...nk)')
Mínimo divisor comum de k números
igcdex(n1,n2,...nk)')
Máximo divisor comum de k números, usando o
logaritmo de Euclides
max(n1,n2,...nk)')
Máximo de k números
min(n1,n2,...,nk)')
Mínimo de k números
ifactor(n)') ou factor(n)
Decompõe n em fatores primos
ifactors(n)')
Dá os fatores primos de n em sua ordem
irem(n,m)
Resto da divisão de n entre m
iquo(n1,n2)
Parte inteiro do quociente n1/n2
iroot(n,m)
Parte inteira de n
ithprime(k)
Devolve o primo k-ésimo
seq(ithprime(k),k=1...n')
Devolve os n primeiros primos
isprime(n)
Reconhece se n é primo ou não
issqrfree(n)
Diz se n é quadrado perfeito
isqrt(n)
Dá a parte inteiro da raiz quadrada de n
issqr(n)
Diz se n é o quadrado de um inteiro
nextprime(n)
Primo seguinte a n
prevprime(n)
Primo anterior a n
chrem([n1..nx],[m1..mx])')
Único inteiro n tal que: n(mod mi) = ni i =1....x
type(expr,prime)
Diz se expr é número primo ou não
type(expr,facint)
Diz se expr esta na forma fatorizada ou não
type(expr,complex(integer))
Diz se expr é um inteiro gaussiano ou não
Entre as funções com argumento inteiro mais típicas relativas ao segundo grupo, destacam-se as
seguintes:
Função
Significado
with(numtheory)
Carrega a livraria numtheory do Maple
factorset(n)
Conjunto de fatores primos de n
divisors(n)
Lista dos divisores de n
sigma(n)
Soma dos divisores de n
tau(n)
Número de divisores positivos de n
bigomega(n)
Número de divisores primos de n
mroot(n1,n2,n3)
Tenha n1 ------ módulo n3
msrqt(n1,n2)
Tenha n1 ------ módulo n2
mlog(n1,n2,n3)
Tenha logaritmo de n1 em base n2 módulo n3
index(n1,n2,n3)
Tenha logaritmo de n1 em base n2 módulo n3
nthpow(n1,n2)
Tenha o maior n tal que n----- divida n1
cfrac(r)
Fração contínua do racional r
cfrac(polinomio)
Fração contínua de cada uma das raízes reais do polinômio
univariante dado
invcfrac(frac)
Converte a fração contínua frac para irracional quadrático
B(n)
Enésimo número de Bernoulli Bn: -------------------------------
fermat(n) ou F(n)
Enésimo número de Fermat: ---------------------------
imagunit(n)
-------- módulo n
mlog(p,q,r)
Logaritmo de p em base q módulo r
cyclotomic(n,variável)
Dá o enésimo polinômio ciclotômico na variável especificada
factorEQ(n,inteiro)
Calcula a fatorização inteira de n o anel euclidiano ----------
phi(n)
Dá o número de inteiros positivos menores ou iguais a n que
são primos relativos com n
invphi(n)
Dá todos os inteiros positivos menores ou iguais a n que têm
exatamente n inteiros positivos que são primos relativos
jacobi(n1,n2) ou J(n1,n2)
Dá o símbolo de Jacobi dos inteiros n1 e n2, ou seja, dá 1 se
n1 é primo relativo com n2 e n2 é inteiro impar positivo, e -1 em outro caso
kronecker({inec1,....,inecx},{----
Dá a aproximação diofática, no caso não homogênio, das
inequações especificadas a respeito dos conjuntos de variáveis dados
minkowski({---
Dá a aproximação diofática, no caso homogênio, das
inequações especificadas a respeito dos conjuntos de variáveis dados
legendre(n1,n2) ou L(n1,n2)
Dá o símbolo de Legendre dos inteiros n1 e n2, ou seja,
dá 1 se n1 é um resíduo quadrático de n2, e dá -1 se não for ( de diz que n1 é um
resíduo quadrático de n2 se existir um inteiro m tal que ---------------(mod n2)).
lambda(n)
Dá o tamanho do maior grupo cíclico gerado por g(mod
n)
mersenne(n) ou M(n)
Diz se ------------- é primo
mcombine(n1,m1,n2,m2)
Dá o inteiro n tal que n---- m1(mod n1) e n---m2(mod
n2). Dá FAIL caso não exista n
mipolys(n,p)
Dá o número de polinômios mónicos univariantes
irredutíveis de grau n sobre Z(mod p)
mipolys(n,p,m)
Dá o número de polinômios mónicos univariantes
irredutíveis de grau n sobre o campo de Galois definido por ------------mobius(n)
Dá a função de Möbius do inteiro positivo n
nthnumer(expr,n)
Dá o enésimo numerador da fração contínua expr
nthdenom(expr,n)
Dá o enésimo denominador da fração contínua expr
nthconver(expr,n)
Dá o enésimo quociente parcial da fração contínua expr
order(n1,n2)
Dá a ordem do inteiro n1 no grupo multiplicativo módulo
n2, ou seja, dá o menor inteiro m tal que ----------(mod n2)
pdexpand(racional)
Dá a expansão periódica do racional, ou seja, dá o signo,
a parte inteira positiva, a parte não periódica e a parte periódica
pprimroot(n)
Dá a menor raiz sendo primitiva do inteiro positivo n, ou
seja, dá o gerador do grupo cíclico baixo multiplicação módulo n contendo
os inteiros
relativamente primos com n, e caso não existam, dá o menor inteiro positivo que não excede a
n e que é primo relativo a n
pprimroot(n1,n2)
Dá a menor raiz sendo primitiva do inteiro positivo n2
que é maior que n1
primroot(n)
Dá a maior raiz primitiva do inteiro positivo n, ou seja,
dá o gerador do grupo cíclico baixo multiplicação módulo n contendo os inteiros
relativamente primos com n
primroot(n1,n2)
Dá a menor raiz primitiva do inteiro positivo n2 que é
maior que n1
quadres(n1,n2)
Diz se n1 é um resíduo quadrático módulo n2
rootsunity(p,n)
Dá todas as raízes p-ésimas da unidade módulo n
safeprime(n)
Calcula o menor primo p maior que n tal que (p-1)/2 é
também primo
sq2factor(n)
Dá a fatorização inteira de n em ---------------
sum2sqr(n)
Dá uma lista de pares de números cujos quadrados
somam n
thue(f(x.y)=m,[x,y])
Resolve a equação para f(x,y) --- Z(x,y) e irredutível
sobre Q[x,y] e m inteiro
thue(f(x,y)----m,[x,y])
Resolve a inequação para f(x,y) --- Z(x,y) e irredutível
sobre Q[x,y] e m inteiro
Vejamos alguns exemplos:
Decomposição em fatores do número 24:
> ifactor(24);
Decomposição em fatores do número 999999999999:
> ifactor(999999999999);
Resto da divisão de 17 por 3:
> irem(17,3);
Máximo divisor comum de 1.000, 500 e 625:
> igcd(1000,500,625);
Mínimo múltiplo comum entre 1.000, 500 e 625:
> ilcm(1000,500,625);
O número 99.991, é primo?
> isprime(99991);
Efetivamente, o número era primo.
Encontrar o número primo que ocupa o lugar 100:
> ithprime(100);
Encontrar todos os números que dividam 24:
> with(numtheory):divisors(24);
Fatores primos do número 12.267.845 e sua ordem de multiplicidade:
> ifactors(12267845);
Encontrar o conjunto de fatores primos do número 135.678.743:
> with(numtheory):factorset(135678743);
Logicamente, o número anterior será primo:
> isprime(135678743);
Encontrar o conjunto de fatores primos do número 135.678.742:
> with(numtheory):factorset(135678742);
Encontrar a lista de divisores, o número de divisores e a soma dos divisores do número 1.000.000:
> with(numtheory):divisors(1000000);
> with(numtheory):tau(1000000);
> with(numtheory):sigma(1000000);
Encontrar o logaritmo de 1.000.000 em base 8 e módulo 52:
> with(numtheory):mlog(1000000,8,52);
Encontrar a raiz quinta de 1.000.000 módulo 52:
> with(numtheory):mroot(1000000,5,52);
Exercício 4. Encontrar o número de combinações sem repetição de 45 elementos tomados de 9 em
9. Resolver o mesmo problema para n elementos tomados de 3 em 3.
> binomial(45,9);
> expand(binomial(n,3));
Exercício 5. Encontrar o resto da divisão de 2^134 entre 3. Encontrar também o número inteiro
k=12mod8.
> irem(2^134,3);
> chrem([12],[8]);
Exercício 5-6. Decompor em fatores primos o número 18.900 e encontrar todos os seus divisores.
Encontrar também o número primo que ocupa oa posição 189.
> ifactor(18900);
> with(numtheory):divisors(18900);
> ithprime(189);
Exercício 5-7. Dois livros têm 840 e 384 páginas, respectivamente. Se estiverem formados por
cadernos com número igual de folhas, e superior a 18 folhas, calcular o número de folhas de um
caderno.
> igcd(840,384);
Exercício 8. Encontrar o número N que ao ser dividido por 16, 24, 30 e 32 dá o resto de 5.
N-5 será múltiplo de 16, 24, 30 e 32, e como é pedido que se calcule o menor número, N-5 será o
mínimo múltiplo comum de 16, 24, 30 e 32:
> ilcm(16,24,30,32);
Logo, N = 480+5 = 485
Exercício 9. Calcular o fatorial de 2000.
Temos aqui um exemplo da alta precisão do Maple V.
> 2000!;
115
Exercício 10. Calcular o número 2 -1 e ver se é primo ou não. Em caso de ser composto,
decompor em seus fatores primos. Calcular os números primos anterior e posterior a
Provar que o número posterior é efetivamente primo.
> 2^115-1;
Agora vamos verificar se é primo:
> isprime(2^115-1);
Logo, tal número não é primo.
Decomposição em fatores primos:
> ifactor(2^115-1);
2 115 -1.
Calculamos agora os primos anterior e posterior, e vemos que o posterior é efetivamente primo.
> prevprime(2^115-1);
> nextprime(2^115-1);
> isprime(nextprime(2^115-1));
Exercício 11. Calcular os 100 primeiros números primos.
> seq(ithprime(k),k=1..100);
Exercício 12. Dado o número 51648597:
a) Verificar se é ou não primo
b) Caso for composto, decompor em fatores primos
c) Calcular o conjunto de seus fatores primos
d) Fatores primos com grau de multiplicidade
e) Divisores do número dado
f) Soma dos divisores
g) Número de divisores
a)
> isprime(51648597);
Logo, não é primo.
b)
> ifactor(51648597);
c)
> with(numtheory):factorset(51648597);
d)
> ifactors(51648597);
e)
> with(numtheory):divisors(51648597);
f)
> with(numtheory):sigma(51648597);
g)
> with(numtheory):tau(51648597);
Exercício 13. Resolver em Z[x,y] (soluções inteiras) as seguintes equações e inequações:
a) x^2 + x*y + y^2 = 19
b) abs(x^3 + x^2*y - 2*x*y^2 - y^3)<5
c) abs(x^5 + x^4*y - 4*x^3*y^2 - 3*x^2*y^3 + 3*x*y^4 + y^5)<10
d) x^3 + y^3 = 5
a)
> with(numtheory):thue(x^2+x*y+y^2=19,[x,y]);
b)
> with(numtheory):thue(abs(x^3+x^2*y-2*x*y^2-y^3)<=5,[x,y]);
c)
> with(numtheory):thue(abs(x^5+x^4*y-4*x^3*y^23*x^2*y^3+3*x*y^4+y^5)<=10,[x,y]);
d)
> with(numtheory):thue(x^3+y^3=5,[x,y]);
Exercício 14. Resolver, no caso homogênio e no não homogênio, o seguinte sistema diofantico:
abs (exp(1)*z1+2^(1/2)*z2 - s1)<=10^(-2)
abs (3^(1/3)*z1+Pi*z2 - s2)<=10^(-4)
> with(numtheory):minkowski({abs(exp(1)*z1+2^(1/2)*z2-s1)<=10^(2),abs(3^(1/3)*z1+Pi*z2-s2)<=10^(-4)},{z1,z2},{s1,s2});
> with(numtheory):kronecker({abs(exp(1)*z1+2^(1/2)*z2-s1)<=10^(2),abs(3^(1/3)*z1+Pi*z2-s2)<=10^(-4)},{z1,z2},{s1,s2});
Exercício 15. Fatorizar os seguintes números:
a) 38477343 no anel Z( 11 )
b) 38434*sqrt(33) no anel Z( 33 )
c) 408294234124-4242*sqrt(29) no anel Z( 29 )
> with(numtheory):factorEQ(38477343,11);
> with(numtheory):factorEQ(38434*sqrt(33),33);
> with(numtheory):factorEQ(408294234124-4242*sqrt(29),29);
Exercício 16. Fatorizar os seguintes inteiros em Z 2 :
a) (1-sqrt(2))^(-4)
b) 83424959
c) 9232-932*sqrt(2)
> with(numtheory):sq2factor((1-sqrt(2))^(-4));
> with(numtheory):sq2factor(83424959);
> with(numtheory):sq2factor(9232-932*sqrt(2));
Exercício 17. Desenvolver em fração contínua os seguintes números:
a) 7/9
b) As raízes do polinômio x^6-x^5-6*x^4+6*x^3+8*x^2-8*x+1
c) As raízes do polinômio 6+139540883?*x^5+17033080*x^4+800302*x^3+18628*x^2+216*x+1
d) 11/9999997
e) 31^(1/2)
> with(numtheory):cfrac(7/9);
> with(numtheory):cfracpol(x^6-x^5-6*x^4+6*x^3+8*x^2-8*x+1);
> with(numtheory):cfracpol(117260219*x^6+139540883*x^5+17033080*x^4+800302*x^3+18628*x^2+216*
x+1);
> with(numtheory):cfrac(11/9999997);
> with(numtheory):cfrac(31^(1/2));
Download

Operações com Números Inteiros