69,373
社区成员
发帖
与我相关
我的任务
分享
/* 约分程序
如输入*A=100,*B=60
则输出*A=5,*B=3
*/
void YueFen(unsigned long *A,unsigned long *B)
{
}
#include<stdio.h>
#include<math.h>
void yuefen(int* ,int*);
main()
{
int a,b,t;
printf("input a b\n");
scanf("%d %d",&a,&b);
if(a>0&&b>0)
{
t=a;
if(a<b)
a=b,b=t;
printf("a=%d b=%d\n",a,b);
yuefen(&a,&b);
printf("a=%d b=%d\n",a,b);
}
}
void yuefen(int *a,int *b)
{
int i;
for(i=2;i<=*b;i++)
if(*b%i==0&&*a%i==0)
{
*a=*a/i,*b=*b/i;
if(*b>1)
yuefen(a,b);
break;
}
}
#include<stdio.h>
#include<math.h>
void swap(int*,int*);
void yuefen(int* ,int*);
main()
{
int a,b;
printf("input a b\n");
scanf("%d %d",&a,&b);
if(a>0&&b>0)
{
swap(&a,&b);
printf("a=%d b=%d\n",a,b);
yuefen(&a,&b);
printf("a=%d b=%d\n",a,b);
}
}
void swap(int *a,int *b)
{
int t;
t=*a;
if(*a<*b)
*a=*b,*b=t;
}
void yuefen(int *a,int *b)
{
int i;
for(i=2;i<=sqrt(*b);i++)
if(*b%i==0)
{
*a=*a/i,*b=*b/i;
if(*b>1)
yuefen(a,b);
break;
}
}
void YueFen(unsigned long *A,unsigned long *B)
{
unsigned long i = 2;
unsigned long c = ((*A) < (*B)) ? (*A):(*B);
if (0 == (*A)%(*C)) && 0 == (*B)%(*C))
{
(*A) = (*A)%(*C);
(*B) = (*B)%(*C);
return;
}
while (i <= c)
{
if (0 == (*A)%i && 0 == (*B)%i)
{
(*A) = (*A)%i;
(*B) = (*B)%i;
i--;
c = ((*A) < (*B)) ? (*A):(*B);
}
i++
}
return;
}
#inclue <stdio.h>
int gcd(int a,int b)
{
if(b) return gcd(b,a%b);
return a;
}
void YueFen(unsigned long *A,unsigned long *B)
{
int temp = 0;
if(*A <= *B)
{
temp = gcd(*A, *B);
}
else
{
temp = gcd(*B, *A);
}
*A /= temp;
*B /= temp;
return;
}
int main(int argc, char* argv[])
{
unsigned long A = 100;
unsigned long B = 60;
printf("Before reduction of fraction:\na = %d, b = %d\n", A, B);
YueFen(&A, &B);
printf("After reduction of fraction:\na = %d, b = %d\n", A, B);
return 0;
}
#include <stdio.h>
/* 约分程序
如输入*A=100,*B=60
则输出*A=5,*B=3
*/
void YueFen(unsigned long *A,unsigned long *B)
{
int a = *A;
int b = *B;
if(a == b)
{
*A = 1;
*B = 1;
return;
}
if(a%b == 0)
{
*A = a/b;
*B = 1;
return;
}
if(b%a == 0)
{
*A = 1;
*B = b/a;
return;
}
if(a > b)
{
for(int i = 2; i <= b; ++i)
{
if((a%i == 0) && (b%i == 0))
{
a = a/i;
b = b/i;
i--;
}
}
}
if(a < b)
{
for(int i = 2; i <= a; ++i)
{
if((a%i == 0) && (b%i == 0))
{
a = a/i;
b = b/i;
i--;
}
}
}
*A = a;
*B = b;
return;
}
int main(int argc, char* argv[])
{
unsigned long a = 100;
unsigned long b = 60;
printf("Before reduction of fraction:\na = %d, b = %d\n", a, b);
YueFen(&a, &b);
printf("After reduction of fraction:\na = %d, b = %d\n", a, b);
return 0;
}