`
ihuashao
  • 浏览: 4534278 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

小数的循环节

 
阅读更多

输入N/D的形式,其中N为分子,D为分母。

如得出的结果小数部分存在循环,就用括号括起来 ,如1/3=0.(3);22/5=4.4 ;1/7=(142857)

Function xunhuan(ByVal N As Long, ByVal D As Long) As String '请依次输入N/D得形式,其中N为分子,D为分母

If N Mod D = 0 Then '整除
xunhuan = N & "÷" & D & "=" & N / D
Exit Function
Else


Dim digit() As String, flag() As Long, temp As Double, temp2 As Long, i As Long, K As Integer
ReDim digit(1 To D + Len(CStr(D))) '定义最长不重复位数
ReDim flag(D) '0-D 每位数字出现于小数点后的位置
xunhuan = N & "÷" & D & "=" & Int(N / D) & "."

temp = N Mod D '取余

i = 2
Do While i <= D + Len(CStr(D)) '循环所有可能

If temp = 0 Then '除尽了
ReDim Preserve digit(1 To i) '前i位
xunhuan = xunhuan & Join(digit, "")
Exit Function
End If


If flag(temp) > 1 Then '重复出现
digit(flag(temp)) = "(" & digit(flag(temp)) 'flag(temp)指该数字第一次出现的位置,添加左括号
ReDim Preserve digit(1 To i - 1)
xunhuan = xunhuan & Join(digit, "") & ")" '添加右括号
Exit Function
Else
flag(temp) = i '赋值
End If
'以下三行模拟除法运算,实现高精度除法
temp = temp * 10
digit(i) = Int(temp / D) Mod 10
temp = temp - Int(temp / D) * D

i = i + 1

Loop

End If
End Function

Private Sub Command1_Click()
Dim t As Single
Dim i As Long, x(1 To 10000) As String
t = Timer
For i = 1 To 10000
x(i) = xunhuan(i, 65535)
Next
Randomize
i = Int(10000 * Rnd + 1)
MsgBox "计算完毕!列举其中任意一个:" & vbCrLf & x(i), vbInformation, "用时" & Timer - t & "秒"
End Sub

分享到:
评论

相关推荐

    分数化小数并找出循环节

    输入两个数字m,n,输出m/n的结果,并找出循环节 0,n&lt;=10000

    C语言实现小数转分数(包括带循环节小数)

    C语言实现小数转分数,包括带循环节的小数

    循环小数(自创算法读取循环小数的小数部分)

    自创算法读取循环小数小数部分,还包括获取字符串所有子集。

    将分数用小数表示,并导出其循环节

    利用手工除法原理,导出所输入分数的小数形式,并求出小数的循环节(小数的存储结构为单链表)。内含源文件+编译后的文件。开发平台为VC++ 6.0.

    C# 超长整数、小数运算类

    用C#编写的超长整数、小数运算类,包括超长整数...共有三个文件,四个类Huge(超长数运算类),Deci(小数类,避免浮点数运算误差),Frac(分数类),Cyclic(小数循环节类),后三个类因“将循环小数转化成分数”而写。

    11076 浮点数的分数表达

    最好用分数来表示小数,有限小数或无限循环小数都可以转化为分数,无限循环小数的循环节用括号标记出来。如: 0.9 = 9/10 0.(3) = 0.3(3) = 0.3(33) = 1/3 当然一个小数可以用好几种分数形式来表示,我们只感兴趣最...

    Java本科组循环小数

    程序输出两个整数做除法产生的小数或无限循环小数(循环节用方括号括起)。 要求考生把所有类写在一个文件中。 调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。 相关的工程文件不要拷入。请不要使用...

    小数,无限循环小数化为分数

    无限循环小数,如0._1,3.5_142851,其中“_”后的数字表示循环节。 小数部分(不含下划线)的位数不超过8位。 【输出形式】 将结果写到标准输出,占一行。形式为:x/y。x、y为整数,分别表示分子与分母。 ...

    xiaoshu.rar_求循环节c_程序循环节

    是一个用C语言编写的求解循环小数的循环节的程序

    m除以n的商是否循环小数

    判断一个数是否循环小数,主要是判断他是否有存在循环节,

    求循环小数

    对于任意的真分数 N/M ( 0 ),均可以求出对应的小数。如果采用链表表示各个小数,对于循环节采用循环链表表示,则所有分数均可以表示为如下链表形式。

    小数转分数

    最好用分数来表示小数,有限小数或无限循环小数都可以转化为分数,无限循环小数的循环节用括号标记出来。如: 0.9 = 9/10 0.(3) = 0.3(3) = 0.3(33) = 1/3 当然一个小数可以用好几种分数形式来表示,我们只感兴趣最...

    小数转换为分数

    无限循环小数,如0._1,3.5_142851,其中“_”后的数字表示循环节。 小数部分(不含下划线)的位数不超过8位。 【输出形式】 将结果写到标准输出,占一行。形式为:x/y。x、y为整数,分别表示分子与分母。

    C小数转换分数的函数

    小数转换为分数的C++代码,能将十进制的小数转化为分子与分母都是整数的分数,换句话说,这个算法能够自动判定循环节。任何十进制数值都能被转化为一个指定精度的分数。 这个算法的根本原理是:一个分数对应一条...

    xunhuan.rar_循环节

    给定一个分式A/D,A为分子,D为分母,将分式化解成最简形式,例如1/3 = 0.[3],化成循环小数形式,并用[]将循环节提取出来

    关于小数的一些结果 (2007年)

    讨论有理小数循环节的素因子分解问题,给出了对任意的素数p和任意的正整数n,pn能够除得尽有限小数的小数部分的充要条件,pn能够除得尽纯循环小数循环节的充要条件,以及适当附加条件后pn能够除得尽混循环小数循环节...

    五上第三单元《小数除法》第四节循环小数第一课时.ppt

    五上第三单元《小数除法》第四节循环小数第一课时.ppt

    11076浮点数的分数表达

    最好用分数来表示小数,有限小数或无限循环小数都可以转化为分数,无限循环小数的循环节用括号标记出来。如: 0.9 = 9/10 0.(3) = 0.3(3) = 0.3(33) = 1/3 当然一个小数可以用好几种分数形式来表示,我们只感兴趣最...

    把分数转换小数,报告加程序

    这是一个程序报告加源码,接受一个以N/D的形式输入的分数,其中N为分子,D为分母,输出它...如果它的小数形式存在循环节,要将其用括号括起来。例如:1/3=.00000...表示为.(3),又如41/333=.123123123...表示为.(123)。

Global site tag (gtag.js) - Google Analytics