如何用C语言求下面的n
来源:百度知道 编辑:UC知道 时间:2024/05/14 00:03:29
(q^n-1)/(q-1)=y/x
q,x,y的值由scanf得到,求n.
q,x,y的值由scanf得到,求n.
我是C语言的初学者,就做了这个程序,验证了几个数据,还没出错,就弄上来了。:)
#include <stdio.h>
#include <math.h>
main()
{
float q,x,y,n;
printf("Please input q x y:");
scanf("%f%f%f",&q,&x,&y);
n=(log((y/x)*(q-1)+1))/(log(q));
printf("\nn=%f",n);
}
先求出来n的表达式然后直接代入就可以了
用一个 IF 语句管理就可以啦
if((q^n-1)/(q-1)=y/x) printf("%f",n);
else{
q++;{else x++; else y++;}}
for (n=1; fabs((pow(q,n)-1)/(q-1)-y/x)>1e-6; n++);
或加个防发散设施,不然如果给的q,x,y不存在那样的等式关系的话,会死循环的:
for (n=1; n<很大一个数 && fabs((pow(q,n)-1)/(q-1)-y/x)>1e-6; n++);