html 显示 循环节,算法:求两个整数相除的循环节

循环节有很长的,例如:

1/9997=0.0001000300090027008102430729218765629688906672001600480144043 212963889166750025007502250675202560768230469140742222666800040012003 60108032409722916875062518755626688006401920576172851855556667,长度是 192

贴代码:

#include

#define mn 1000

void main()

{

int i,m,n,r,t;

int p[mn],q[mn];

for(i=0;i

{

p[i]=-1;

q[i]=0;

}

printf("input :m,n(0<=m

scanf("%d%d",&m,&n);

t=0; //初始化值

r=m; //把被除数赋给r

while(r!=0&&(p[r]==-1)) //循环条件当r不为0且p[r]=-1时执行循环体

{

p[r]=t; //余数r第一次出现的位置

r=10*r; //把被除数扩大10倍,以至于取第一个小数

t++;

q[t]=r/n; //计算小数点后t位的值:取整,即为m/n的小数从小数点开始逐个取出放到数组q中

r=r%n; //算完一位就去掉一位,即取余对n

}

printf("m/n = 0."); //因为m

if (r!=0) //被除数不为0就执行以下语句

{

for(i=1;i<=p[r];i++) //输出循环小数中前面非循环的部分

printf("%d",q[i]);

printf("("); //输出循环的小数放在括号中

for(i=p[r]+1;i<=t;i++)

printf("%d",q[i]);

printf(")");

}

else //被除数为0的情况

for(i=1;i<=t;i++) //输出不循环的小数

printf("%d",q[i]);

printf("/n");

}

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值