标题:计算P分之一的循环节上的数字
只看楼主
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册: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
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册: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
来 自:河北省曲阳县
等 级:版主
威 望:57
帖 子:713
专家分:556
注 册:2016-6-29
得分:0 
回复 12楼 csyx
做的很好!给你点赞。只要再次出现1就进入循环了。此前用取整函数。有:积=P*商,和,余数=上层余数-积(本次余数扩大10倍)。就这些因素。

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

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

素数问题的解决是我学习编程永恒的动力。
2023-03-03 19:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511389-1-1.html




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

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