Dividendo Divisor Resto da divisão inteira

Propaganda
PG, Aula de 18.10.12 - Revisões sobre if else while for(;;) switch
1. Elabore um programa que leia do standard input dois valores n1,n2 inteiros e calcula a multiplicação pelo
processo da ”soma russa”. Este processo está descrito em:
http://www.eb23-guifoes.rcts.pt/NetMate/sitio/curiosidades.htm#Multiplicação%20russa
Exemplificado através da figura seguinte para a multiplicação entre 71 e 43
2. Elabore um método que recebe em parâmetro dois inteiros e calcula e devolve o máximo divisor comum
entre esses dois números.
Ver detalhes em: http://pt.wikipedia.org/wiki/M%C3%A1ximo_divisor_comum
Dividendo Divisor
Resto da divisão inteira
348
156
36
36 ≠ 0
12 ≠ 0
= 0 (pára o ciclo, porque é Zero)
O mdc é 12 (último divisor)
156
36
12
2.1 Elabore um programa na linguagem Java que lê do teclado dois valores inteiros que serão passados em
argumento ao método a ser chamado em main e que foi definido em 2.
3. Diga qual é o objectivo da seguinte definição do método java e qual os resultados das duas chamadas:
public static long f( int n ){ //Duas chamadas do método p em main
long r=1;
…
while( n!=0 ) {
long r0 = f(5);
r = r * n--;
long r1 = f(7);
}
…
return r;
}
4. Diga qual é o objectivo da seguinte definição do método java e quais os resultados das suas chamadas:
public static boolean p( int n ){
//Oito chamadas de p(.. e seus resultados
int r=3;
boolean r0 = p(2); //dá true
if( n==2 ) return true;
boolean r0 = p(5); //dá true
if( n<=1 || n%2==0 ) return false;
boolean r0 = p(7); //dá true
while( (r*r)<=n ){//r<=Math.sqrt(n) boolean r0 = p(9); //dá false
if( n%r == 0 ) return false;
boolean r1 = p(25); //dá false
++r;
boolean r2 = p(13); //dá true
}
boolean r0 = p(23); //dá true
return true;
boolean r3 = p(113);//dá true
}
5. Estudo a seguinte o seguinte código e diga quais os valores que são escritos no ecrã. Este código chama
o método p(… definido em 4. dentro do for(;;)
System.out.println("Tabela de números");
int ct=1;
System.out.print(" "+2+" ");
for( int i=3; ct<100; i +=2 ){
if( p(i) ) {
System.out.print( (i<10? " ": (i<100? " ":"") ) + i +" ");
ct++;
if( ct%5==0 ) System.out.println();//
}
}
System.out.println();
6. Estudo a seguinte definição e escreva o enunciado que corresponda às instruções descritas no seu bloco.
public static long numeroBase10ParaBaseB(int numero, int baseB ){
long novoN=0;
int n=numero;
long novoNaBaseB=0;
int base=1, b10=1;
while( numero!=0 ){
int d = numero % baseB;
novoNaBaseB= novoNaBaseB +d*b10;
b10 *=10;
numero /= baseB;//numero /= baseB; <==> numero = numero/baseB;
}
return novoNaBaseB;
}
6.1. Dada a chamada do método em main:
public static void main(String[] args ){
long r = numeroBase10ParaBaseB(1238,8);
r = numeroBase10ParaBaseB(123,4);
….
7. Elabore a definição do método que calcula quantos dígitos pares tem um dado número inteiro positivo
recebido em parâmetro, retornando esse resultado.
Teste a definição anterior com a chamada do método para n=1240759 dentro do método main
Download