Java Multiple Numbers and Primes

Asked

Viewed 1,468 times

-2

Write a Java code to print from 1 to 100 in ascending order, stating whether the number is even, odd, multiple of 3, 4 or 5. If the number is multiple of 5, write another "for" inside the "if" for, print all the multiples of 5 before it in descending order. And at the end check the numbers are cousins. My code is like this:

public Static void main(String[] args) {

    int x = 5;

    for (int i = 1; i <= 100; i++) {
        if (i % 2 == 0) {
            System.out.println(" ");
            System.out.println("Número par : " + i);
            for (int j = 3; j < 5; j++) {
                if (i % j == 0) {
                    System.out.println("Múltiplo de : " + j);
                    if (i % x == 0) {
                        for (int k = i; k ==0; k--) {
                            System.out.println(" Multiplos de 5 : " + k);
                            System.out.print(" ");
                        }
                    }
                }
            }
        } else {
            System.out.println(" ");
            System.out.println("Número ímpar: " + i);
            for (int j = 3; j < 5; j++) {
                if (i % j == 0) {
                    System.out.println("Múltiplo de : " + j);
                    if (i % x == 0) {
                        for (int k = i; k == 0; k--) {
                            System.out.println("Multiplos de 5: " + k);
                        }
                    }
                }
            }
        }
    }

}

}

  • Okay, and what is your question? Where are you making a mistake? What do you not understand?

  • I can’t find the multiples and put them in descending order, and the mistake with the Cousins is that I can’t find them.

2 answers

1

You can simplify your logic, taking into account some things:

  • only makes sense to test if the number is divisible by 4 if it is even (odd numbers are not multiples of 4)
  • with the exception of 2, all other primes are odd
  • to print multiples of 5, do not need to decrease the for 1 in 1, just do it 5 in 5

Then an alternative would be:

for (int n = 1; n <= 100; n++) {
    if (n % 2 == 0) {
        System.out.print(n + " é par");
        if (n == 2) // 2 é o único número par que é primo
            System.out.print(" e primo");
        else if (n % 4 == 0) // só faz sentido ver se é múltiplo de 4 se for par
            System.out.print(" e múltiplo de 4");
    } else { // se for ímpar, verifica se é primo
        System.out.print(n + " é ímpar");
        boolean primo = true;
        if (n > 2) { // só tem esse if porque o número 1 não é primo
            for (int i = 3; i < n / 2; i += 2) { // não precisa iterar até n, e só itero pelos ímpares
                if (n % i == 0) {
                    primo = false;
                    break;
                }
            }
            if (primo)
                System.out.print(" e primo");
        }
    }
    if (n % 3 == 0)
        System.out.print(" e múltiplo de 3");
    if (n % 5 == 0) {
        System.out.print(" e múltiplo de 5. Múltiplos menores que " + n + ":");
        // imprimir múltiplos de 5 menores que n em ordem descrescente
        for (int mult = n - 5; mult >= 0; mult -= 5)
            System.out.print(" " + mult);
    }

    System.out.println();
}

I used a "naive" algorithm to check if the number is prime. Of course, if you search, you will find many others, much more efficient, but for an exercise is already good.

The exit is:

1 é ímpar
2 é par e primo
3 é ímpar e primo e múltiplo de 3
4 é par e múltiplo de 4
5 é ímpar e primo e múltiplo de 5. Múltiplos menores que 5: 0
6 é par e múltiplo de 3
7 é ímpar e primo
8 é par e múltiplo de 4
9 é ímpar e múltiplo de 3
10 é par e múltiplo de 5. Múltiplos menores que 10: 5 0
11 é ímpar e primo
12 é par e múltiplo de 4 e múltiplo de 3
13 é ímpar e primo
14 é par
15 é ímpar e múltiplo de 3 e múltiplo de 5. Múltiplos menores que 15: 10 5 0
16 é par e múltiplo de 4
17 é ímpar e primo
18 é par e múltiplo de 3
19 é ímpar e primo
20 é par e múltiplo de 4 e múltiplo de 5. Múltiplos menores que 20: 15 10 5 0
21 é ímpar e múltiplo de 3
22 é par
23 é ímpar e primo
24 é par e múltiplo de 4 e múltiplo de 3
25 é ímpar e múltiplo de 5. Múltiplos menores que 25: 20 15 10 5 0
26 é par
27 é ímpar e múltiplo de 3
28 é par e múltiplo de 4
29 é ímpar e primo
30 é par e múltiplo de 3 e múltiplo de 5. Múltiplos menores que 30: 25 20 15 10 5 0
31 é ímpar e primo
32 é par e múltiplo de 4
33 é ímpar e múltiplo de 3
34 é par
35 é ímpar e múltiplo de 5. Múltiplos menores que 35: 30 25 20 15 10 5 0
36 é par e múltiplo de 4 e múltiplo de 3
37 é ímpar e primo
38 é par
39 é ímpar e múltiplo de 3
40 é par e múltiplo de 4 e múltiplo de 5. Múltiplos menores que 40: 35 30 25 20 15 10 5 0
41 é ímpar e primo
42 é par e múltiplo de 3
43 é ímpar e primo
44 é par e múltiplo de 4
45 é ímpar e múltiplo de 3 e múltiplo de 5. Múltiplos menores que 45: 40 35 30 25 20 15 10 5 0
46 é par
47 é ímpar e primo
48 é par e múltiplo de 4 e múltiplo de 3
49 é ímpar
50 é par e múltiplo de 5. Múltiplos menores que 50: 45 40 35 30 25 20 15 10 5 0
51 é ímpar e múltiplo de 3
52 é par e múltiplo de 4
53 é ímpar e primo
54 é par e múltiplo de 3
55 é ímpar e múltiplo de 5. Múltiplos menores que 55: 50 45 40 35 30 25 20 15 10 5 0
56 é par e múltiplo de 4
57 é ímpar e múltiplo de 3
58 é par
59 é ímpar e primo
60 é par e múltiplo de 4 e múltiplo de 3 e múltiplo de 5. Múltiplos menores que 60: 55 50 45 40 35 30 25 20 15 10 5 0
61 é ímpar e primo
62 é par
63 é ímpar e múltiplo de 3
64 é par e múltiplo de 4
65 é ímpar e múltiplo de 5. Múltiplos menores que 65: 60 55 50 45 40 35 30 25 20 15 10 5 0
66 é par e múltiplo de 3
67 é ímpar e primo
68 é par e múltiplo de 4
69 é ímpar e múltiplo de 3
70 é par e múltiplo de 5. Múltiplos menores que 70: 65 60 55 50 45 40 35 30 25 20 15 10 5 0
71 é ímpar e primo
72 é par e múltiplo de 4 e múltiplo de 3
73 é ímpar e primo
74 é par
75 é ímpar e múltiplo de 3 e múltiplo de 5. Múltiplos menores que 75: 70 65 60 55 50 45 40 35 30 25 20 15 10 5 0
76 é par e múltiplo de 4
77 é ímpar
78 é par e múltiplo de 3
79 é ímpar e primo
80 é par e múltiplo de 4 e múltiplo de 5. Múltiplos menores que 80: 75 70 65 60 55 50 45 40 35 30 25 20 15 10 5 0
81 é ímpar e múltiplo de 3
82 é par
83 é ímpar e primo
84 é par e múltiplo de 4 e múltiplo de 3
85 é ímpar e múltiplo de 5. Múltiplos menores que 85: 80 75 70 65 60 55 50 45 40 35 30 25 20 15 10 5 0
86 é par
87 é ímpar e múltiplo de 3
88 é par e múltiplo de 4
89 é ímpar e primo
90 é par e múltiplo de 3 e múltiplo de 5. Múltiplos menores que 90: 85 80 75 70 65 60 55 50 45 40 35 30 25 20 15 10 5 0
91 é ímpar
92 é par e múltiplo de 4
93 é ímpar e múltiplo de 3
94 é par
95 é ímpar e múltiplo de 5. Múltiplos menores que 95: 90 85 80 75 70 65 60 55 50 45 40 35 30 25 20 15 10 5 0
96 é par e múltiplo de 4 e múltiplo de 3
97 é ímpar e primo
98 é par
99 é ímpar e múltiplo de 3
100 é par e múltiplo de 4 e múltiplo de 5. Múltiplos menores que 100: 95 90 85 80 75 70 65 60 55 50 45 40 35 30 25 20 15 10 5 0

0

public class TesteCodigo {

private static boolean sePrimo(int numero) {
    for (int j = 2; j < numero; j++) {
        if (numero % j == 0)
            return false;   
    }
    return true;
}   
public static void main(String[] args) {

    List<Integer> lista = new ArrayList<Integer>();
    List<Integer> listaInversa = new ArrayList<Integer>();
    int i = 1;

    for (i = 1; i <= 100; i++) {
        if (i % 2 == 0) {
            System.out.println("O numero " + i + " é par");
        }else {
            System.out.println("O numero " + i + " é impar");
        }
        if(i % 2 == 0) {
            System.out.println("O numero " + i + " é multiplo 2");
        }
        if(i % 3 == 0) {
            System.out.println("O numero " + i + " é multiplo 3");
        }
        if(i % 4 == 0) {
            System.out.println("O numero " + i + " é multiplo 4");
        }           
        if(i % 5 == 0) {
            System.out.println("O numero " + i + " é multiplo 5");
            lista.add(i);
            if(i == 100) { // somente no final, exibe multiplos invertidos
                int tamanho = lista.size();
                for (int l = 0; l < lista.size(); l++) {
                    listaInversa.add(lista.get(tamanho-1));
                    tamanho--;
                }       
                System.out.println("multiplos de 5 invertidos: " + listaInversa.toString());
                for (int j = 1; j <= 100; j++) {
                }                   
            }
        }
    }

    System.out.println("Verificação dos numeros primos: ");
    for (i = 2; i <= 100; i++) {
        if(sePrimo(i))
            System.out.println("O numero " + i + " é primo");
    }    
}

}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.