Programação

7 respostas
java
B

Olá boa tarde para todos, estou com um problema em meu algoritmo que é esse:

Um número inteiro positivo é dito semiprimo se ele é igual ao produto de
dois (e apenas dois) números primos. Por exemplo, 15 é semiprimo pois 15
= 3 x 5; 9 é semiprimo pois 9 = 3 x 3; 20 não é semiprimo pois 20 = 2 x
10 e 10 não é primo. Escreva um programa que receba um valor informado
por um usuário, e imprima “semiprimo” caso o valor seja semiprimo, e
imprima “nao semiprimo” caso o valor não seja semiprimo.

Fiz esse codigo mas não consigo fazer ele me retornar qdo o numero digitado não é semiprimo, qdo é ele me retonar, alguém poderia me ajudar e me dizer onde estou errando. segue o codigo:

public class SemiPrimos {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    
    
    int num = 0;
    int cont = 0;
    
    System.out.println("Digite um numero inteiro");
    num = input.nextInt();
    
    for(int i=2; i<=num; i++){
        if((num%i)==0){
        cont++;
            System.out.println("O numero é semiprimo");
        }
    
        else
            for(int j=2;j<num;j++)
                 if((num*j)==0){
                  cont++;
            System.out.println("O numero não é primo");
      }
   }
}

}

7 Respostas

D

Olá

Quantos resto zero aparecerá no loop para um semiprimo e um não semiprimo?

int count = 0;
for (int i = 2; i <= num; i++) {
    if ((num % i) == 0) {
        count++;
    }
}
System.out.println("Contou " + count + " restos zeros para o numero " + num);

Depois de fazer testes, faça o seguinte

Se count igual de um semiprimo então
    imprime semiprimo
senão
    imprime não é semiprimo
B

Qual foi o erro no meu codigo?

D
else
        for(int j=2;j&lt;num;j++)
             if((num*j)==0){
              cont++;
        System.out.println("O numero não é primo");
}

O segundo loop, pelo q li enunciado, não é necessário dizer se o número é primo, mas mesmo que fosse, o segundo loop seria desnecessário. E também o System.out.println("O numero é semiprimo"); dentro do primeiro loop.

B

No “Se” vc esta dizendo que se o contador for igual ao numero semi primo então ele imprime numero semi primo?

B

O codigo vai fica assim?

if(cont==num){

System.out.println(O numero é semiprimo);

}

else

System.out.println(O numero não é semiprimo);

}

}
B

não esta dando certo

D

Para ser semiprimo tem que ter somente 2 primos como fator de inteiros:
Ex: 6 = 2 x 3

Executando o codigo, o valor do count será 3 pois será resto zero quando i for igual a 2, 3 e 6, portanto

if(cont==3){
    System.out.println("O numero é semiprimo");
}
else {
    System.out.println("O numero não é semiprimo");
}

Outro ex: 12 = 2 x 2 x 3, não semiprimo, será zero quando i for 2, 3, 4, 6, 12, portanto count deve ser 5 que é diferente de 3, somente count == 3 será semiprimo então 12 não é semiprimo

Criado 27 de maio de 2016
Ultima resposta 28 de mai. de 2016
Respostas 7
Participantes 2