• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

asilva

Desespero com problema

8 mensagens neste tópico

Crie um programa que gere aleatoriamente N números inteiros do intervalo [200, 2000] e mostre os máximos divisores comuns entre o primeiro e o último, o segundo e o penúltimo, o terceiro e o antepenúltimo e assim sucessivamente.

tenho este problema e nao faço ideia como resolve-lo, alguem me pode dar umas dicas??

cumps :eek:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para criares os nºs aleatórios podes usar o método random() da classe Math ou usar a classe Random e o método nextInt(). Depois, à medidas que vais gerando os números, insere-los num array de dimensão N. De seguida basta iterares até ao meio do array e ires calculado o máximo divisor comum entre o 1º e o último. Para acederes ao último iterando apenas até meio do array, vais precisar de calcular o índice utilizando o tamanho N do array e o índice actual. Para calcular o máximo divisor comum podes utilizar o algoritmo de Euclides.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado. ja andava aqui com um nó na cabeça em relação ao random.

thanks

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

import java.util.Random;


public class GDC {

private GDC() {}

public static void main(String[] args)
{
	if(args.length>1)
	{
		System.out.println("Java <Class> <n>");
		System.exit(-1);
	}

	Integer length = new Integer(args[0]);
	int[] numbers = new int[length];
	Random randomGenerator = new Random();

	for(int i=0; i<length; i++)
		numbers[i] = randomGenerator.nextInt(1801)+200;

	for(int i=0, j=length-1; i<=j; i++, j--)
		System.out.println("GDC of " + numbers[i] + " and " + numbers[j] + " is " + mdc(numbers[i], numbers[j]));
}

private static int mdc(int i, int j)
{
	int max, min, rest;

	if (j>i)
	{
		max = j;
		min = i;
	}
	else
	{
		max = i;
		min = j;
	}

	do
	{
		rest = max % min;

		if(rest == 0)
		{
			return min;
		}

		max = min;
		min = rest;
	}
	while(true);
}
}

Testado e a funcionar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O objectivo aqui é ajudar a chegar à solução e não oferecer o código de bandeja.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não me custou nada fazer o código e eu como aprendo muito melhor a ver código do que com dicas, prefiro dar o código quando me é possível.

Mas se quiserem por dicas eu posso dar:

Um site a explicar como calcular o máximo divisor comum de forma fácil: http://www.somatematica.com.br/fundam/mdc.php

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não me custou nada fazer o código e eu como aprendo muito melhor a ver código do que com dicas, prefiro dar o código quando me é possível.

Mas se quiserem por dicas eu posso dar:

Um site a explicar como calcular o máximo divisor comum de forma fácil: http://www.somatematica.com.br/fundam/mdc.php

O objectivo com as dicas é apenas para que o teu cérebro desenvolva novas formas de lógica, de forma a que quando apareça um novo problema seja capaz de desenvolver uma solução mais rapidamente.

:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por outro lado quando se está a apanhar bonés em relação às dicas dadas isso não ajuda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora