Advertisement
alvaro_93

Primes Ring

Apr 20th, 2015
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.39 KB | None | 0 0
  1. /*
  2.  * File:   main.c
  3.  * Author: Alvaro
  4.  *
  5.  * Created on 20 de abril de 2015, 01:59 PM
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #define MAX 16
  11.  
  12. /*
  13.  *
  14.  */
  15. int imprime(int sol[MAX],int n){
  16.     int i;
  17.     for (i = 0; i < n; i++)
  18.         printf("%d ",sol[i]);
  19.     printf("\n");
  20.    
  21. }
  22. int es_primo(int n){
  23.     int i=2;
  24.     while((n%i)!=0){
  25.         i++;
  26.     }
  27.     if ((n / i)==1) return 1;
  28.     else return 0;
  29.    
  30. }
  31.  
  32. int primeRing(int valores[MAX],int estados[MAX],int sol[MAX],int niv,int nelem){
  33.     int i;
  34.     if(niv==nelem)
  35.         if(es_primo(sol[niv-1]+sol[0])){
  36.             imprime(sol,nelem);
  37.             return 0;
  38.         }
  39.        
  40.    
  41.     for (i = 0; i < nelem; i++){
  42.         if(estados[i]==0 && es_primo(valores[i]+sol[niv-1])){
  43.             estados[i]=1;
  44.             sol[niv]=valores[i];
  45.             if (!(primeRing(valores,estados,sol,niv+1,nelem)))
  46.                 estados[i]=0;
  47.              
  48.            
  49.         }
  50.        
  51.        
  52.        
  53.     }
  54.     return 0;
  55. }
  56. int main(int argc, char** argv)
  57. {
  58.     int n,i;
  59.     int valores[MAX],estados[MAX],sol[MAX];
  60.    
  61.  
  62.     printf("Ingrese el n: ");scanf("%d",&n);
  63.     for (i = 0; i < n; i++)
  64.         estados[i]=0;
  65.     for (i = 0; i < n; i++)
  66.         valores[i]=i+1;
  67.     estados[0]=1;
  68.     sol[0]=1;
  69.     primeRing(valores,estados,sol,1,n);
  70.        
  71.        
  72.  
  73.     return (EXIT_SUCCESS);
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement