| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1410 人关注过本帖
标题:计算P分之一的循环节上的数字
只看楼主 加入收藏
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:703
专家分:2760
注 册:2018-3-13
收藏
得分:2 
以下是引用独木星空在2023-2-26 08:11:38的发言:
就是商*P作为减数,让被除数作为余数,举例说明:如1除23,不够除,上数0(也就是商值),23*0=0;第二步,扩大10,1变成了10,仍就不够除,上数0(也就是商值),23*0=0,余数=10-0=10,扩大10,变成100,此时够除了,上数4,23*4=92,100-92=8,扩大10倍,变成80,上数3,23*3=69,80-69=11,扩大10倍,变成110,.....。
     这不是问题的关键,你可以用自己的方法去实现,我只要程序最终的结果,是整个程序,不是具体的某个P的循环节上的数字。256*256+1的循环节可以达到256*256.  以它作为验证吧。

既然算法都写出来了,转成vfp语法应该就简单了

这家伙很懒,啥也没留下
2023-02-26 13:35
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:703
专家分:2760
注 册:2018-3-13
收藏
得分:10 
程序代码:
Local ii
Local array aprs[1]

Create Cursor test (prime I, 节长度 I, 循环节 M)
For m.ii = 1 to ALines(m.aprs, '2,3,5,7,11,73,107,997,8317,256*256+1', 1+4, ',')
    Insert into test (prime) Values (Evaluate(m.aprs[m.ii]))
EndFor

Set Escape on        && 预防代码不严谨导致出现死循环, 可按 Esc 中断

Scan all
    Wait window nowait prime        && 监视算到哪个质数了
    Replace next 1 循环节 with 计算循环节(prime)
EndScan
Wait clear
Replace all 节长度 with Len(循环节)
Locate
Browse nowait
Return 

Function 计算循环节(pr)
    Local cSg    && 循环节
    Local nRm    && 余数
    Local nQt    && 商
    Local nDv    && 被除数
    Local lp    && 用来预防死循环(非必须)
    
    lp    = 0                            
    cSg = ''
    nDv = 10
    Do while lp < 1000000            && 限制下循环节长度
        Do while nDv < pr
            nDv = nDv * 10
            cSg = cSg + '0'
            lp = lp + 1
        EndDo
        nRm = Mod(nDv, pr)
        If nRm == 0
            Exit         && 被整除
        Else
            nQt = Int(nDv / pr)
            nDv = (nDv - nQt * pr) * 10
            cSg = cSg + Str(nQt,1)
            If nRm == 1
                Exit     && 循环了
            EndIf
        EndIf
        lp = lp + 1
    EndDo
    Return cSg
EndFunc

这家伙很懒,啥也没留下
2023-02-26 14:12
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分:683
注 册:2016-6-29
收藏
得分:0 
回复 12楼 csyx
做的很好!给你点赞。只要再次出现1就进入循环了。此前用取整函数。有:积=P*商,和,余数=上层余数-积(本次余数扩大10倍)。就这些因素。

素数问题的解决是我学习编程永恒的动力。
2023-02-26 14:38
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分:683
注 册:2016-6-29
收藏
得分:0 
回复 12楼 csyx
一个人的领悟能力是决定你的高度。
在数学中国论坛网站,yangchuanju先生,是我最敬佩的,无论什么新的课题,他都能第一时间,进入你所在的领域,如果,没有超强的领悟能力,那是不可能做到的。
     我是奥游数论世界的人,对于有关素数问题是我的最爱,痴迷到忘我的境界。

素数问题的解决是我学习编程永恒的动力。
2023-02-28 20:42
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分:683
注 册:2016-6-29
收藏
得分:0 
我的体会是:能在Excel上计算出来的数据,很容易转化成VFP编程语言。

素数问题的解决是我学习编程永恒的动力。
2023-03-03 19:12
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分:683
注 册:2016-6-29
收藏
得分:0 
能打开你话匣子的是你感兴趣的东西。

素数问题的解决是我学习编程永恒的动力。
2023-08-02 21:59
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1712
专家分:3318
注 册:2012-2-29
收藏
得分:0 
2023-08-03 06:19
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分:683
注 册:2016-6-29
收藏
得分:0 
在Excel能做的事情,在这里,和vfp上都容易实现。

素数问题的解决是我学习编程永恒的动力。
2023-08-25 09:18
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:71
帖 子:921
专家分:683
注 册:2016-6-29
收藏
得分:0 
时间久了,就忘记当时的灵感是如何产生的了。

素数问题的解决是我学习编程永恒的动力。
6 天前 22:07
快速回复:计算P分之一的循环节上的数字
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019457 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved