Decomposição em fatores primos
Publicado por Enzo de Brito Ferber 28/03/2009
[ Hits: 17.354 ]
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; }
Gerador de numeros da mega-sena tabajara
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
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
Problema em SSD ao dar boot LinuxMint LMDE FAYE 64 (0)
Baixar jogos Independentes para Ubuntu [RESOLVIDO] (4)
PIP3 - erro ao instalar módulo do mariadb para o Python (1)
Linux x Plataformas de Trading - um problema (in-)solúvel? (4)