- Codice:
#include <stdio.h>
typedef
struct razionale{
int num;
int den;
} raz;
///k e' inizializzato ad uno numer a num
/// riduci_MCD ,anche se ancora non trova la frazione ridotta ai minimi termini , troverebbe MCD tra due interi : num e den
raz* riduci_MCD (raz* p, int k,int c,int numer)///numer dev'essere fissato una volta per tutte perche' se c'e' MCD i potra' altrimenti valere zero
{
int n=0,d=0, i=1,fattoreMCD=1;
n= p->num;
d = p->den;
i = part_int(numer/k);
if (c> 0 ) { printf("\n Bene c'e un MCD diverso dall'unita' MCD vale :%d, il numero di iterazioni vale :%d \n",part_int(numer/(k-1)),k);return p;}
if(i*i<n ){printf("\n Bene MCD vale %d il numero di iterazioni :%d\n",fattoreMCD ,k);return p; }
if (n<=i*i )
{
if( n % i ==0 )
{
if( d % i ==0 )
{
n = (n /i) ; d= (d/i) ;
p->num = n;
p->den = d;
c++;
}
if( d % k ==0 )
{
n = (n /k) ; d= (d/k) ;
p->num = n;
p->den = d;
fattoreMCD = k * fattoreMCD ;//Allora opportunament il fattore parta da uno
}
}
// else printf("\nBene proviamo con %d\n",i);
}
riduci_MCD ( p, k+1,c,numer );
return p;
}