C语言如何求两个double型数的公因数

因为两个数都不是整数,所以不能用辗转相除法。在线等
这个两个数都大于int的范围

第1个回答  2014-04-05
浮点数做整除及求公约数是没有意义的,你可以考虑用_int64类型,_int64的表示范围: -9223372036854775808~9223372036854775807,可以看出在你这个题目应该是够用的。追问

谢谢,你这个可以

追答

那为什么不采纳我的呢??

第2个回答  2014-04-05
求double类型的公因数有意义吗?如果没意义就没有解决的必要。如果是某个需求的话,也可以用其他的方法代替。因为double类型的数没有下限,不可能实现迭代,所以就没办法找了追问

老师布置的作业,具体是求两个分子分母都超过int范围的分数的最简形式

追答

你直接说最简形式或者分数化简就好了,帮你想想

追问

谢谢

追答

我写个程序试试,你等一下

追问

这是具体题目
printf("当x=56/123,y=67/45时\n");
printf("(3x^5-7x^4+4x^3-5x^2+43x-1)-(13y^9-73y^7+41y^5-57y^4+23y^2+11y-1)=\n");

追答
#include<stdio.h>
#include<stdlib.h>

void main()
{
printf("当x=56/123,y=67/45时\n");
printf("(3x^5-7x^4+4x^3-5x^2+43x-1)-(13y^9-73y^7+41y^5-57y^4+23y^2+11y-1)=\n"); 
double x = 56 / 123.0;
double y = 67.0 / 45;
double result =( 3 * pow(x, 5) - 7 * pow(x, 4) + 4 * pow(x, 3) - 5 * pow(x, 2) + 43 * x - 1 )- (13*pow(y,9)-73*pow(y,7)+41*pow(y,5)-57*pow(y,4)+23*pow(y,2)+11*y-1);
printf("(3x^5-7x^4+4x^3-5x^2+43x-1)-(13y^9-73y^7+41y^5-57y^4+23y^2+11y-1)=%f\n",result);
system("pause");
}

本回答被提问者采纳
第3个回答  2014-04-05
在C语言中,只有整数才能求取余数,如果需要求取浮点数的余数,只能用变通的方法进行。
double num1 = 12.56,num2 = 4.0;
double remainder;
remainder = num1 - (int)(num1/num2);

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网