Sopiseiro 0 Denunciar post Postado Abril 12, 2006 Galera o negocio é o seguinte to fudido o professor pediu um algoritmo que gere 5 primeiro numeros perfeito como faço essa @#$@# Compartilhar este post Link para o post Compartilhar em outros sites
skimo-solar 0 Denunciar post Postado Abril 12, 2006 Definição de número perfeito: Número perfeito é todo aquele que a soma de seus divisores inteiros, exceto ele proprio, que resultam em um número inteiro que é ele proprio.Bem, para começar faça um loop para achar todos os divisores, e cada vez que você achar um divisor já some-o com o anterior encontrado.Assim você terá a soma de todos os divisores. Depois simplesmente use uma condicional para dizer se a soma dos divisores é igual ou diferente do número, afirmando se é perfeito ou imperfeito.Este é o procedimento para verificar se um número é perfeito.Então para achar os 5 primeiros simplesmente faça um loop, começando do 2, incrementando cada vez que encontrar ou não um número perfeito, e armazene a quantidade de vezes que encontrou em um contador. Quando este contador atingir 5 acabou :)Não é tão complicado quanto parece :P Compartilhar este post Link para o post Compartilhar em outros sites
Sopiseiro 0 Denunciar post Postado Abril 12, 2006 Definição de número perfeito: Número perfeito é todo aquele que a soma de seus divisores inteiros, exceto ele proprio, que resultam em um número inteiro que é ele proprio.Bem, para começar faça um loop para achar todos os divisores, e cada vez que você achar um divisor já some-o com o anterior encontrado.Assim você terá a soma de todos os divisores. Depois simplesmente use uma condicional para dizer se a soma dos divisores é igual ou diferente do número, afirmando se é perfeito ou imperfeito.Este é o procedimento para verificar se um número é perfeito.Então para achar os 5 primeiros simplesmente faça um loop, começando do 2, incrementando cada vez que encontrar ou não um número perfeito, e armazene a quantidade de vezes que encontrou em um contador. Quando este contador atingir 5 acabou :)Não é tão complicado quanto parece :PKra eu entendi o seu pensamento assim mas não faz me de uma luz pra resolver esse problema# include <stdio.h>main (){ int numero,divisor,cont=0,soma=0,perfeito; while (cont<=5) { for (numero=1;numero<=1000;numero++) { for (divisor=1;divisor<=(numero/2);divisor++) { perfeito = numero%divisor; if (perfeito==0) soma = soma + divisor; } if (soma==numero) printf ("Numero %d e perfeito.",numero); cont++; } } getchar (); getchar ();} Compartilhar este post Link para o post Compartilhar em outros sites
skimo-solar 0 Denunciar post Postado Abril 12, 2006 #include <stdio.h>// Retorna 1 se for perfeito ou 0 se não forint checaperfeito(int num) { int divisores=0,i; for (i=1; i<num; i++) { if ((num%i) == 0) { divisores += i; } } if(divisores) { if(divisores==num) return 1; } return 0;}// Função principalvoid main() { int i,j; while(j!=5) { // enquanto não achar os 5 primeiros não para de tentar if(checaperfeito(i)) { printf("%d\n",i); j++; } i++; } } Vê se entende o meu Compartilhar este post Link para o post Compartilhar em outros sites
Pantoja 5 Denunciar post Postado Abril 15, 2006 caraca... isso é em C ??showde bola os codigos....ainda caio nessa rede!!abrasssss Compartilhar este post Link para o post Compartilhar em outros sites
Sopiseiro 0 Denunciar post Postado Abril 18, 2006 caraca... isso é em C ??showde bola os codigos....ainda caio nessa rede!!abrasssssKra o negocio é o seguinte o algoritmo eu ja fiz so que preciso saber uma coisa, em linguagem "C" gera os cinco numeros ou não? Por que o algoritmo que eu fiz gera apenas quatro e não sai disso. Compartilhar este post Link para o post Compartilhar em outros sites
Ourives C 0 Denunciar post Postado Setembro 14, 2008 Oi Eu estava procurando o mesmo número/algorítimo e acabei achando vcs. E tb achei isso na wikipedia Número perfeito. Fiz o código abaixo usando C. Mas tive um problema. Pela definição da fómula que está no link acima o multiplicador 2 elevado a n menos 1 que seria em C (pow(2,n)-1) TEM QUE SER um número primo... tudo bem podem me chamar de noob mas não consegui fazer uma função e verifica-se se o número é primo e retorna-se o valor dele pra parte indicada no código. Tentei fazer a função... quem puder desde já agradeço.. ah só pra constar minha prof pirou quando pediu isso... os 10 primeiros nº perfeitos #include<stdlib.h> #include<stdio.h> #include<math.h> #include<conio.h> [b]/* int divisor(int) { int aux, primo[3], n=2; for(aux=0;aux<=3;aux++) { if((pow(2,n)-1)%2!=0 || (pow(2,n)-1)%3!=0) primo[aux]; n++; } return primo[aux]; } */[/b] void main(void) { int n=2, perfeito[10], cont; for(cont=0;cont<=10;cont++) { perfeito[cont]=pow(2,n-1)*(pow(2,n)-1 [b] <<<quero colocar aqui a no lugar deste pow a função divisor acima[/b]); n++; } printf("Os n\xA3meros perfeitos são:\n"); for(cont=0;cont<=10;cont++) printf("%d\n", perfeito[cont]); system ("pause"); //getch(); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites