Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera queria saber se esse algoritmo ta certo...
public class Primos {
int n1;
int total = 0;
int i, j;
String texto;
public void calculaPrimo(){
this.total = this.n1 * 10;
for(this.i = 1;this.i < this.total;this.i++){
for(this.j = 1;this.j < this.i; this.j++){
if(this.j % this.i == 0){
this.texto = " " + this.i;
}
}
}
}
}fiz assim, mas ta dizendo que a primeira expressão do for ta errado, estranho...
olha:
public class Primos {
int numero;
int limiteSuperior;
int i, divisor;
public void calculaPrimo(){
limiteSuperior = 10 * numero;
for(i = numero; i < = limiteSuperior; i++){
for(divisor = 2; divisor < i && i % divisor == 0; divisor++){
if (divisor >= i) {
System.out.println(i);
}
}
}
}
}Está errado porque a princípio você não inicializa a variável numero.
O seu for interno está errado. Esse for é vazio mesmo. O que ele faz é iterar enquanto não encontrar nenhum divisor no intervalo [2,N). O laço termina com divisor = i, o que indica que só há 2 divisores: 1 e i ,então o número é primo.
inicializei com zero e nada:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package modelo;
/**
*
* @author Allan
*/
public class Primos {
int n1 = 0;
int limiteSuperior;
int i, divisor;
String texto;
public void calculaPrimo(){
limiteSuperior = 10 * n1;
for(i = n1; i < = limiteSuperior; i++){
for(divisor = 2; divisor < i && i % divisor == 0; divisor++){
if (divisor >= i) {
texto = texto + " ";
}
}
}
}
}descobri o erro, o < = estavam com um espaço entre eles, acredita? kkkkkkk
os erros de sintax foram corrigidos, mas o algoritmo não funciona...rs...eu digitei o 10 e não entrou nenhuma vez no if... não escreveu nada
Funciona, sim. Você tem que copiar certo.
Já falei que o for interno é vazio.
import java.util.Scanner;
public class AlgoMath {
public static void genPrimos(int numero) {
int limiteSuperior = 10 * numero;
int i, divisor;
for (i = numero; i <= limiteSuperior; i++) {
for (divisor = 2; divisor < i && i % divisor != 0; divisor++);
if (divisor >= i && i > 1) {
System.out.println(i);
}
}
}
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
Integer n = cin.nextInt();
genPrimos(n);
cin.close();
}
}
Sério. O que é i e o que é j?
Seu algoritmo está errado porque
1- o exercício não pede que seja entre 1 e 10, e sim entre um número qualquer e seu múltiplo de 10 (olhe os laços);
2- sempre vai imprimir qualquer número, já que todo inteiro é divisível por 1.
public class AlgoMath {
public static void genPrimos(int numero) throws IllegalArgumentException {