Como saber se resto de divisão se eh inteiro ou nao?

tenho o seguinte codigo para saber se o numero eh inteiro o nao ele faz a verificação ateh 1000

[code]public static boolean numeroPrimo(int numero){
float resultado;
for (int i =0; i < 1000; i++){
if (i != 0 && i != numero){
resultado = (float) numero /i;
//AQUI PRECISARIA SABER SE O RESULTADO DIVIDIDO PELO I EH INTEIRO OU NAO
if(resultado / i == /inteiro/){
return false;
}
}
}
return true;

}[/code]

*saber o resto da divisão se é inteiro ou não
*codigo

portugues fail

bom… pra saber se um número é inteiro ou não… geralmente eu faço assim:

[code]float resultado = (float) numero/i;

int resultadoInteger = (int)resultado;

if((resultado-resultadoInteger)==0)
//é inteiro
else
//é float[/code]

Usa o operador % que dá o resto da divisão.

if (numero % i == 0){ // numero/i é inteiro } else { // numero/i não é inteiro }

[quote=pmlm]Usa o operador % que dá o resto da divisão.

if (numero % i == 0){ // numero/i é inteiro } else { // numero/i não é inteiro }[/quote]
isso não diz se o número é inteiro ou não.

[code]int x = 3;
int y = 2;

System.out.println("saída: " + (x % y));[/code]
saída: 1

if (numero % i  == 0){
  System.out.println(" O número é inteiro ")  ;
} else {
  System.out.println(" O número não é inteiro ")  ;}

Agora diz

[quote=wbdsjunior][quote=pmlm]Usa o operador % que dá o resto da divisão.

if (numero % i == 0){ // numero/i é inteiro } else { // numero/i não é inteiro }[/quote]
isso não diz se o número é inteiro ou não.

[code]int x = 3;
int y = 2;

System.out.println("saída: " + (x % y));[/code]
saída: 1
[/quote]

Isso por que 3 / 2 da 1 e sobra 1.
O resultado da operação ‘%’ sempre é inteiro.

[quote=Mark_Ameba]
Isso por que 3 / 2 da 1 e sobra 1.
O resultado da operação ‘%’ sempre é inteiro.[/quote]
E que tal ler bem antes de comentar? Se 3%2 é diferente de 0, então 3/2 não é inteiro.

[quote]Isso por que 3 / 2 da 1 e sobra 1.
O resultado da operação ‘%’ sempre é inteiro.
[/quote]

So é inteiro se o resto for 0
senão é inteiro !!!

O resto da divisão retorna o mesmo tipo de dado que você está dividindo. Se for float, retorna float, se for int, retorna int.

Caso você faça uma divisão de tipos diferentes, como float e int, por exemplo, vai retornar o tipo que comporta o maior número, no caso float.
Existe uma tabela nos livros básicos de java que mostra a relação dos dados inteiros, se puder, pesquise essa tabela e com base nos dados que serão dividos, você consegue descobrir.

Hum… pra começar, esse não é o melhor jeito de saber se um número é primo ou não.

Está simplesmente errado, e fim de papo.

O seu programa só consegue determinar se um número de 1 até 1000000 é primo; acima desse valor, você vai ter vários números considerados primos, mas que não o são. O limite correto para as divisões sucessivas é a raiz quadrada de N.

Depois, você quer saber se o número é divisível por outro (e nesse caso o resto da divisão é zero), não se o resto da divisão é inteiro (ele sempre é, pela definição de resto). Um pouco de matemática não faz mal a ninguém…

Você teria de corrigir seu programa para (e supondo que você ainda queira usar esse método grotesco das divisões sucessivas):

class EhPrimo {
    public static boolean ehPrimo (int n) {
        if (n == 2) return true; // aham - falha nossa
        int sqrtN = (int) Math.sqrt (n);
        if (n % 2 == 0) {
            return false;
        }
        for (int i = 3; i <= sqrtN; i = i + 2) {
            if (n % i == 0) {
                return false;
            }            
        }
        return true;
    }
    public static void main (String[] args) {
        System.out.println (ehPrimo (24691357));
        System.out.println (ehPrimo (488560001));
    }
}

Se o que você quer fazer é verificar se um numero é primo, usa o que o java ja te oferece.

Pra mim sempre funcionou.

import java.math.BigInteger;
import javax.swing.JOptionPane;

public class Primo {

    public static void main(String args[]) {
        String n = JOptionPane.showInputDialog(null, "Insira o numero");

        if (VericaPrimo(n)) {
            JOptionPane.showMessageDialog(null, "O numero [ " + n + " ] é primo");
        } else {
            JOptionPane.showMessageDialog(null, "O numero [ " + n + " ] não é primo ");
        }

    }

    public static boolean VericaPrimo(String n) {
        BigInteger numero = new BigInteger(n);
        boolean flag = false;
        if (numero.isProbablePrime(Integer.MAX_VALUE)) {
            flag = true;
        }
        return flag;
    }
}

A vantagem de você esta função é que ela muito mais rapida e ta da a resposta em tempo viavel.

bom… provavelmente deve ser um trabalho de faculdade não é?

Claro que deve ser. Só vi três tipos de usos para números primos aqui no GUJ:

  • Gente que precisa resolver um trabalho de faculdade;

  • Gente que precisa resolver uma daqueles programas de olimpíadas de programação, tais como os que aparecem no TopCoder ( http://www.topcoder.com/ ) ou então no Project Euler ( http://projecteuler.net/ ).

  • Gente que quer implementar o RSA “do zero” e não sabe que existe o tal método “isProbablePrime” que foi apresentado acima.

[quote=Vinny] if (numero % i == 0){ System.out.println(" O número é inteiro ") ; } else { System.out.println(" O número não é inteiro ") ;}

Agora diz

[/quote]
acho que você não entendeu o que eu quis dizer.

não vou explicar porque outros já o fizeram.

Este post me deixou de cabelo em pé!

[2]

[2][/quote]
então [3].

Sinceramente só li essa frase quando respondi aquilo:

Agora entendi o que todos querem dizer.
Outra maneira então só pra diversificar.

if(Math.round(x) == x)//Ele é inteiro.

Pra saber se um numero eh inteiro vc faz assim
#include <stdio.h>

{
int i;
float x; //seja x o numero que voce quer saber se eh inteiro, e considerando somente os positivos
//se vc quiser os negativos tambem eh soh fazer umas mudancas mas a base eh essa

scanf("%f", &x);

for(i=0;i<=x;i++)
{
if ( i == x )
printf(“X eh inteiro\n”);
}
printf(“X nao eh inteiro\n”);

return 0;
}