TOPIC

O que devo estudar para melhorar esses código

Oi eu sou goku asked 3 years ago

#include <stdio.h>
#include <math.h>
#include <stdlib.h>

int primo(int numero);

int main(int argc, char** argv)
{
    int numero, aux, cont, primeiro, vetor[3];
    scanf("%d", &numero);
    while(numero != 0)
    {
        aux = 2;
        cont = 0;
        primeiro = numero;
        while(1)
        {
            if(primo(aux))
            {
                if(numero % aux == 0)
                {
                    numero = numero / aux;
                    vetor[cont++] = aux;
                }
                if(numero == 1)
                {
                    break;
                }
            }
            aux++;
        }
        printf("%d = %d x %d x %d\n", primeiro, vetor[0], vetor[1], vetor[2]);
        scanf("%d", &numero);
    }
    return 0;
}

int primo(int num)
{
    int pri = 1, i, raiz = sqrt(num);
    if (num == 1 || num == 0 || (num != 2 && num % 2 == 0))
    {
        return 0;
    }
    if(num == 2)
    {
        return 1;
    }
    for(i = 3; i <= raiz; i += 2)
    {
        if(num % i == 0)
        {
            pri = 0;
            break;
        }
    }
    return pri;
}

Remember not post solutions. Your post may be reviewed by our moderators.

  • feodorv replied 3 years ago

    You can apply sieve of Eratosthenes https://www.geeksforgeeks.org/sieve-of-eratosthenes/