Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pedro rodrigues

verficar se o número é primo

Recommended Posts

E ae galera, precioso do seguinte: o usuário entra com um número no sistema e com uma função recursiva é verificado se o número é primo ou não.estou pesquisando na internet e fuçando no devcpp mas está complicado...se alguém puder ajuar fico muito agradecido... vlw...

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função básica é essa:

Pega o número n, verifica se ele é divisível por todos os números de 2 até a raiz quadrada de n. Se for divisível por algum então não é primo.

 

Já supondo que o usuário vai entrar com um número maior ou igual a 2 a função poderia ser essa:

/* n é o número e i é a variável auxiliar */for(i=2;i*i<=n;++i) {   if(!n%i) return 0; /* não é primo */}return 1; /* é primo */

Aí está a forma mais simples, sem tratamento de erros e provavelmente ficará bem lenta para números muito grandes.

Mas a idéia está aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ow.. naum ha necessitad de se fazer uma funçao recursiva para akele exemplo...

uma funçao q testa se eh um numero primo apenas corre do 2 ate a raiz d n e verifica se n eh divisivel por algum destes...

naum tem mesmo necessidade d se criar uma funçao recursiva..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu necessito que seja feito com uma função recursiva.Podo não ser necessário pra você, mas pra mim é.Continuo tentando... Se alguém puder ajudar agradeço.Vlw...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nah, não falei por mal, só estou falando que eu necessito que seja feito recursivamente... Pois é a situação.Desculpem pelo mal entendio. Me expressei mal. Peço desculpas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui tem um modo recursivo, está longe de ser o melhor.

int checadivisivel(int n, int i) {		if(n<2 || !(n%i)) return 0;		if(n==2 || i*i>=n) return 1;		return checadivisivel(n,++i);}
Lógico que você vai ter que chamar a função com mais um parâmetro, exemplo:

checadivisivel(NUMERO, 2)

 

Neste caso ele está considerando que 2 não é primo...

 

Podemos fazer também com uma variável global (algo não aconselhável)

int i=2;int *p=&i;int checadivisivel(int n) {		if(n<2 || !(n%*p)) return 0;		if(n==2 || i*i>=n) return 1;		(*p)++;		return checadivisivel(n);}int main(...
Só chamamos a função como:

checadivisivel(NUMERO)

 

Como eu disse, funciona...

Mas não são bons métodos.

 

Ps: não revisei as funções, talvez hajam mais bugs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <conio.h> #include <stdio.h>int primo(int a);void main(){ int a; printf ("digite um numero: \n"); scanf ("%d",&a); if (a<0) a=a-(2*a); primo(a)? printf (" eh primo !\n" ): printf (" nao eh primo !\n" ); getch(); }int primo(int B){ int i; if (b==0) return 0; if (b==1) return 1; for(i=2;b%i!=0&&b>i;i++) {} if(b==i) return 1; return 0;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

por isso que o brasil não vai pra frente...o cara PRECISA de uma função recursiva pra calcula numeros primos, pq deve ser tarefa da faculdade (no máximo)...pq que desenvolvedor que precisa usar recursividade em um projeto dele...mas não sabe fazer (se esse for o trabalho dele)...vcs vao e entregam o codigo pronto pra ele...expliquem pra ele como faz...ensinem a procurar,...digam pra que ele poste o codigo dele...pra que vcs digam o que está errado...c a gente ficar dando o codigo pronto pro cara...ele nunca vai aprender a se virar...flws

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.