Números primos entre si

4 respostas
F

Pessoal, fiz o código para saber se os dois números informados pelo usuário são primos entre si. Mas não estou conseguindo chegar ao objetivo.
Vejam o código e me mostrem onde estou errando.

import java.util.Scanner;

/**
 * Escreva um programa que determine se dois valores inteiros e positivos A e B são primos entre si. 
 * (dois números inteiros são ditos primos entre si, caso o maior divisor comum seja o 1).
 * @author fernando
 *
 */
public class Ex7_2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner entrada = new Scanner (System.in);
		
		int a; //Primeiro número
		int b; //Segundo número
		int resto = 1; //Número maior dividido pelo menor
		
		
		
		//Recebendo dados dos usuários
		do {
			System.out.println("Digite o primeiro número:");
			a = entrada.nextInt();
		}
		while (a < 0);
				
		do {
			System.out.println("Digite o segundo número:");
			b = entrada.nextInt();
		}
		while (b < 0);
		
		// Verificando se os números são primos entre sí.
				
			for (int i = 0 ; resto == 0; i++) {
				
				if (a>b){
					resto = a % b;
					a = b;
					b = resto;
				}
				
				if (a<b){
					resto = b % a;
					b = a;
					a = resto;
				}
				
			}
			if (b == 1){
				System.out.println("Os números\t" +a+ "\te\t" +b+ "\tsão primos entre sí.");
			}
			if (b != 1){
				System.out.println("Os números\t" +a+ "\te\t" +b+ "\tnão são primos entre sí.");
			}
			
	}
}

4 Respostas

E

Dois números são primos entre si se o MDC deles for 1.

De fato, você está usando o cálculo do MDC mas deve haver alguma coisinha errada mesmo.

E
package guj;

public class ExemploCalculoMDC {

    public int mdc(int a, int b) {
        if (b == 0)
            return a;
        else
            return mdc(b, a % b);
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        ExemploCalculoMDC e = new ExemploCalculoMDC();
        int a = 123456;
        int b = 654321;
        int x = e.mdc(a, b);
        System.out.printf("mdc(%d, %d) = %d : %s %n", a, b, x, x == 1 ? "primos entre si" : "não primos");
        a = 123457;
        b = 754321;
        x = e.mdc(a, b);
        System.out.printf("mdc(%d, %d) = %d : %s %n", a, b, x, x == 1 ? "primos entre si" : "não primos");
    }

}
F

Isso é parte do programa né? Ainda não estou neste nível no java. E preciso que os números sejam fornecidos pelo usuário.
RESUMINDO: Não entendi muito bem.

R

aproveita o código do entanglement que ta perfeito…

muda o que está dentro do PRINTF se voce não está entendendo ali e coloca as variáveis A e B receberem valor (ali ele está definindo valores ja).

ele usou recursividade no metodo mdc ou seja, ele fica chamando o método mdc dentro dele até o b ser zero… dai ele devolve o mdc calculado

Criado 8 de março de 2013
Ultima resposta 8 de mar. de 2013
Respostas 4
Participantes 3