请教各位

tygfr 2006-09-03 10:04:02
小弟弟我现在有个困惑,晚上因此睡不着
我用数组 ( int a[100] ) 写出了 1/7 的小数点后 100 位,请问如何判断其循环体是 142857 ?
要求打印出来是 (142857),也就是循环体写一块就可以了
谢谢大家
...全文
204 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tygfr 2006-09-04
  • 打赏
  • 举报
回复
欣赏一下吧
tygfr 2006-09-04
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <windows.h>
using namespace std;
int main()
{
int t[100], i, n, d, m[100], a, s = 0;
cout<<"ENTER N,D:"<<endl;
cin>>n>>d;
cout<<n<<"/"<<d<<"=.";
for(i = 0; i < 1000; i++)
{
t[i] = (n * 10) / d;
n = (n * 10) % d;
m[i] = n;
for(a = 0; a < i; a++)
if(n == m[a])
{
s = 1;
break;
}
if(s == 1)
break;
}
for(s = 0; s < i; s++)
{
if(s == a)
cout<<"(";
cout<<t[s];
}
cout<<")";
system("pause");
return 0;
}
tailzhou 2006-09-03
  • 打赏
  • 举报
回复
是不可能用float或double存储的.浮点数有精度问题.
自己用数组处理.
tygfr 2006-09-03
  • 打赏
  • 举报
回复
又比如
11/59要是使用常用的double的话就精度损耗,要是用数组
可以得到:
0.1864406779661016949152542372881355932203389830508474576271........
上面小数点后面的都是循环体,要是我的循环体有那么长怎么办?
tygfr 2006-09-03
  • 打赏
  • 举报
回复
呃~~~`````
原理懂,请问具体代码实现是什么?
我已经存在数组了
tailzhou 2006-09-03
  • 打赏
  • 举报
回复
1/1001 == 999/999999;

所以1/1001的循环体是 000999

这都是小学的知识,重温之.
tailzhou 2006-09-03
  • 打赏
  • 举报
回复

因为 1/7==142857/999999

所以1/7的循环体是 142857
tygfr 2006-09-03
  • 打赏
  • 举报
回复
还有一个疑问
1/1001 = 0.000999000999000999000999000999......
这个情况下如何处理?
tygfr 2006-09-03
  • 打赏
  • 举报
回复
........

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧