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

20 respostas
A

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

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;
		
	}

20 Respostas

A

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

portugues fail

R

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

float resultado = (float) numero/i;

int resultadoInteger = (int)resultado;

if((resultado-resultadoInteger)==0)
   //é inteiro
else
  //é float
P

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

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

W
pmlm:
Usa o operador % que dá o resto da divisão.
if (numero % i  == 0){
// numero/i é inteiro
} else {
// numero/i não é inteiro
}
isso não diz se o número é inteiro ou não.
int x = 3;
int y = 2;

System.out.println("saída: " + (x % y));
saída: 1
V
if (numero % i  == 0){
  System.out.println(" O número é inteiro ")  ;
} else {
  System.out.println(" O número não é inteiro ")  ;}

Agora diz

M
wbdsjunior:
pmlm:
Usa o operador % que dá o resto da divisão.
if (numero % i  == 0){
// numero/i é inteiro
} else {
// numero/i não é inteiro
}
isso não diz se o número é inteiro ou não.
int x = 3;
int y = 2;

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

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

P

Mark_Ameba:

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

E que tal ler bem antes de comentar? Se 3%2 é diferente de 0, então 3/2 não é inteiro.

V

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

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

D

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.

E

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));
    }
}
G

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.

R

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

E

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.

W

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

Agora diz


acho que você não entendeu o que eu quis dizer.

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

M

Este post me deixou de cabelo em pé!

V

[2]

J

[2]
então [3].

M

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.
A

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;
}

V

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

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

Criado 25 de novembro de 2009
Ultima resposta 13 de abr. de 2011
Respostas 20
Participantes 13