terça-feira, 10 de abril de 2018

Resolução da Dinamica 002

O código que eu desenvolvi para fatorar um número em fatores primos segue abaixo. Como disse no post anterior muitas melhorias podem ser feitas, como por exemplo usar o Teorema de Miller para acelerar a verificação da primariedade dos números.

#include <stdio.h>


int verificaPrimo(int n){
    int i;
    if(n < 2){
        return 0;
    }
    else if(n == 2){
   
        return 1;
   
    }
    else{
     
        for(i = 2; i < n; i+=1){
            if(!(n % i))
                return 0;
            }
        return 1;

        }




    }





int n_esimo_primo(int n){

if( n == 1)
    return 2;

if (n == 2)
    return 3;



int i = 2;


while(n){
  if(verificaPrimo(i)){
        n--;
  }


 
    i+=1;
}
  return i - 1;

 }
int main(){
    int n, i, d;
    scanf("%d", &n);
    i = 1;
     while( n != 1){

        d = n_esimo_primo(i);
        while(!(n % d)){
            printf("%d ", d);
            n = n / d;
        }
        i++;
       
    

    }
}


Nenhum comentário:

Postar um comentário