PASCAL Exemplos de Exercícios 2 Estruturas de Repetição ______________________________ Linguagem Computacional Exercício: Primos entre si. • Escreva um algoritmo em PORTUGOL que determine se dois valores inteiros e posi?vos A e B são primos entre si. • Dois números inteiros são ditos primos entre si, caso não exista divisor comum aos dois números, além do 1. program primos; Var A, B, C: integer; APENAS1: boolean; begin APENAS1:= true; { sempre haverá o 1 como divisor comum } write('Entre com valor de A: '); readLn(A); write('Entre com valor de B: '); readLn(B); C := 2; {vai começar a testar a partir de 2 } while ( APENAS1) and ( C <= A ) and ( C <= B ) do {intervalo} begin if (A mod C = 0) and (B mod C = 0) then APENAS1:= false; { achou outro divisor em comum } C := C + 1; { incrementa o contador } end; if (APENAS1) then writeLn('A e B sao primos entre si ') else writeLn('A e B nao sao primos entre si'); end. Exercício: fatorial com repeat-­‐un)l • Repita um programa para cálculo do fatorial usando obrigatoriamente a estrutura REPEAT-­‐UNTIL Program fatorial_repeat_2; Uses CRT; {Programa para cálculo de fatorial.} Label inicio,fim; Var n,i,fatorial:integer; Begin ClrScr; inicio: Write('N = (menor que 0 = fim) --> '); Readln(n); If n<0 then goto fim; Writeln; fatorial:=1; i:=1; if n>1 then Repeat i:=i+1; fatorial:=fatorial*i; Until i=n; Writeln('fatorial de ':30,n,' = ',fatorial); Writeln; goto inicio; fim: End. Adriano Mauro Cansian 5 1 não é primo (1) • Por definição, um número posi?vo é primo se for maior do que 1 e for divisível apenas por 1 e por ele mesmo. O fato de não se considera 1 como primo é uma convenção conveniente, pois facilita o enunciado de vários teoremas da teoria dos números. 1 não é primo (2) • teorema fundamental da aritmé?ca diz que todo inteiro maior que 1 pode ser representado de forma única, a menos da ordem dos fatores, por um produto de números primos, cada um elevado a um expoente maior ou igual a 1. Se considerássemos o 1 como primo, haveria sempre 2 representações, uma incluindo o 1 , a outra não. • Por exemplo. Temos que 10 = 5 X 2, que é a representação unívoca de 10 como produto de primos. Se considerássemos 1 como primo, teíamos também a representação 10 = 5 X2 X1, que nada agrega em termos der informação e complicaria desnecessaria e inu?lmente a matemá?ca. Verificar se um número é primo • Fazer um loop que vai de 2 a N -­‐ 1 , sendo N o número dado. – Se N for divisível por algum dos números do intervalo do loop, ele não é primo. • Obviamente ele será divisível por ele mesmo (N-­‐1). • X é divisível por Y se o resto da divisão de X por Y é zero. Ou: X MOD Y = 0 program numprimos; uses crt; var x, i, cont: integer; begin clrscr; write('Informe um numero: '); readln(x); cont:=0; for i:= 1 to x do begin if x mod i = 0 then cont:=cont + 1; end; if cont<=2 then begin writeln('O numero ', x, ' e primo.'); end else begin writeln('O numero ', x, ' não e primo.'); end; readkey; end. Exercício: múl?plos de 3 • Criar um programa em PASCAL que receba vários números inteiros e posi?vos e imprima a média dos números múl?plos de 3. • A execução deve encerrar quando um número não posi?vo for lido. program multiplos_de_3; var MEDIA: real; NUM, SOMA, C: integer; begin C := 0; write('Digite um numero: '); readLn(NUM); while ( NUM > 0 ) do begin if ( NUM mod 3 = 0) then begin C := C + 1; SOMA := SOMA + NUM; end; write('Digite um numero: '); readLn(NUM); end; MEDIA := SOMA / C; writeLn('A media dos multiplos de 3 digitados eh: ',MEDIA:5:4); end.