如何用C语言求下面的n

来源:百度知道 编辑:UC知道 时间:2024/05/14 00:03:29
(q^n-1)/(q-1)=y/x
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++);