赞
踩
统计分母在区间[a,b]的最简真分数共有多少个?并求这些最简真分数升序序列中的第k项。
所谓最简真分数是指:分子小于分母,且分子分母无公因数的分数。
输入正整数a,b,k。
输出分2行:第1行是最简真分数的个数;第2行是递增序列中第k项的分数形式。
10 99 1000
n=2976 The 1000 Item=27/80
分数项不超过3000个
- #include<stdio.h>
- struct test
- {
- int fenmu;
- int fenzi;
- };
-
- int main()
- {
- test p[3000];
- test h;
- int a,b,k=0,n=0;
- int i,j;
- int t,u;
-
- scanf("%d%d",&a,&b); scanf("%d",&k);
-
- for(j=a;j<=b;j++)
- for(i=1;i<=j-1;i++)
- {
- for(t=0,u=2;u<=i;u++)
- if(j%u==0&&i%u==0)
- {
- t=1;break;
- }
- if(t==0){n++;p[n].fenzi=i;p[n].fenmu=j;}
- }
-
-
-
- for(i=1;i<=n-1;i++)
- for(j=1;j<=n-i;j++)
- if((p[j].fenzi*p[j+1].fenmu)>(p[j+1].fenzi*p[j].fenmu))
- {
- h=p[j];p[j]=p[j+1];p[j+1]=h;
- }
- printf("n=%d\nThe %d Item=%d/%d\n",n,k,p[k].fenzi,p[k].fenmu);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。