Ce programme donne, pour le quotient de a par b: sa nature (réductible ou non), son rang (ordre du dénombrement) parmi les fractions de même nature, le pourcentage d’irréductibles jusqu’à cette fraction. Il affiche les fractions irréductibles obtenues dans l’ordre numérique; de même pour les fractions simplifiables.
def pgcd(a,b): reste=a%b if reste==0 : return b else : return pgcd(b,reste) def insere(a,b,L): rg,val=0,a/b for e in L: if e[2]>val:break else:rg+=1 L.insert(rg,[a,b,val]) def denombre(n,d): som,tot,rang,irr,red=2,0,0,[],[] while som<=n+d: num,denom=1,som-1 while num<som: PGCD=pgcd(num,denom) if PGCD==1: rang+=1 insere(num,denom,irr) else:insere(num,denom,red) tot+=1 if num==n and denom==d:return rang,tot,PGCD,irr,red num+=1 denom-=1 som+=1 a,b=2,4 rng,tot,gcd,Lirr,Lred=denombre(a,b) if gcd==1:print('{}/{} : fraction irreductible #{}'.format(a,b,rng)) else:print('{}/{} : fraction simplifiable #{}'.format(a,b,tot-rng)) print('Nombre de fractions inferieures ou egales : {}'.format(tot)) print('Ratio irreductibles={}%'.format(round(rng/tot*100,1))) print("Fractions irreductibles par ordre croissant:") for f in Lirr: print('{}/{}'.format(f[0],f[1]),end=" ") print("\nFractions simplifiables par ordre croissant:") for f in Lred: print('{}/{}'.format(f[0],f[1]),end=" ")