Decomposição em fatores primos
Publicado por Enzo de Brito Ferber 28/03/2009
[ Hits: 17.361 ]
Homepage: http://www.maximasonorizacao.com.br
Sim, eu tenho outro script desse aqui no VOL, mas esse está bem melhor (mais compacto e rapido).
Outra coisa, o código está em inglês como sempre, pois este site não é o unico que publico (e o ingles é a linguagem internacional da informática).
Então, happy coding!
// primes.c
/* Enzo Ferber : <enzo@veloxmail.com.br>
*
* Decompose into Prime Factors a given number
*
* march 27 2009
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define START 2
// used by the main() function to print the factors
int control;
/* decom ( num )
*
* @ num: number to decompose
*
* @ Return: return an int* containing all the prime factors
*/
int *decom ( int num )
{
// ...
register int i;
int *primes = (int *) malloc ( sizeof (int) );
// Houston, we have a problem!
if ( !primes ) exit (0);
// set control variable
control = 1;
// START represents the first prime number, 2
for ( i = START; i <= num || num != 1 ; i++ )
{
// ensures just an exact division
while ( (num % i) == 0)
{
// I WANT MORE MEMORY, BITCH!!!
primes = (int *) realloc ( primes, control * sizeof (int));
// Houston, we have a problem!
if ( !primes) exit (0);
// put the current prime factor into the list
primes[control - 1] = i;
control++;
// set new number to be divided next
num = num / i;
}
}
// return the prime list
return primes;
}
int main ( int argc, char **argv )
{
// check for the correct argument
if ( argc != 2 )
{
// HowTo use a very complex program...
printf ( "Usage: %s <number>\n", argv[0] );
return 0;
}
// begin the program if the arguments are correct
register int i;
// call the function to decompose into prime factors
int *primes = decom ( atoi(argv[1]) );
// print prime list
for ( i = 0; i < control - 1; i++ )
printf ( "%3d: %d\n", i + 1, primes[i] );
// free the memory
free ( primes );
return 0;
}
Ajuda para calcular 5 Notas! Não Consigo colocar os gets na formula
Função boa para ler string em C
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
How can I remove duplicate MSG files from my folders effectively? (0)
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









