标题:输入一个正整数,进行质因数分解并输出其所有的质因数怎么写代码啊
只看楼主
BOKETTO
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-6-10
结帖率:100%
已结贴  问题点数:20 回复次数:9 
输入一个正整数,进行质因数分解并输出其所有的质因数怎么写代码啊
比如输入18
结果为  18=2*3*3
搜索更多相关主题的帖子: 输出 分解 正整数 输入 代码 
2020-06-10 19:57
qiuxingce
Rank: 2
等 级:论坛游民
帖 子:118
专家分:93
注 册:2014-1-17
得分:10 
input '请输入一个合数:' to n
cExp=ALLTRIM(STR(n))+'='
FOR i=2 to n-1
    IF 质数否(i)
        IF n/i=INT(n/i)
            cExp=cExp+ALLTRIM(STR(i))+'*'
            n=n/i
            i=1
        ENDIF
    ENDIF
ENDFOR
IF RIGHT(cExp,1)=='*'
    ? LEFT(cExp,LEN(cExp)-1)
ELSE
    ? '该数无法分解质因数'
ENDIF


PROCEDURE 质数否
LPARAMETERS n
LOCAL i
FOR i=2 to n-1
    IF n/i=INT(n/i)
        RETURN .f.
    ENDIF
ENDFOR
RETURN .t.



[此贴子已经被作者于2020-6-11 07:47编辑过]

2020-06-11 07:44
pjtyzyq
Rank: 4
等 级:业余侠客
威 望:6
帖 子:230
专家分:240
注 册:2016-2-14
得分:7 
CLEAR
input to xx
zz=xx
yy=""
FOR i=2 TO xx
    IF MOD(xx,2)=0 THEN
        yy=yy+"*2"
        xx=xx/2
    ELSE
        if MOD(xx,3)=0 THEN
            yy=yy+"*3"
            xx=xx/3
        ELSE
            IF MOD(xx,5)=0 THEN
                yy=yy+"*5"
                xx=xx/5
                IF MOD(xx,7)=0 THEN
                    yy=yy+"*7"
                    xx=xx/7
                ENDIF
            ENDIF
        ENDIF
    ENDIF
ENDFOR
IF xx<>1
    yy=yy+"*"+allTRIM(STR(xx))
endif
?alltrim(str(zz))+"="+SUBSTR(yy,2,LEN(yy)-1)
不知是否实现了你的想法?

[此贴子已经被作者于2020-6-11 08:09编辑过]

2020-06-11 07:59
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 

坚守VFP最后的阵地
2020-06-11 09:58
BOKETTO
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-6-10
得分:0 
回复 3楼 pjtyzyq
谢谢谢谢  是可以的
2020-06-11 10:54
BOKETTO
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-6-10
得分:0 
回复 2楼 qiuxingce
CEXP 是什么意思啊
2020-06-11 10:55
BOKETTO
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2020-6-10
得分:0 
回复 4楼 sdta
谢谢
2020-06-11 11:03
qiuxingce
Rank: 2
等 级:论坛游民
帖 子:118
专家分:93
注 册:2014-1-17
得分:2 
cExp是变量名称啊,随便起的
2020-06-11 15:57
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:1 
以下是引用pjtyzyq在2020-6-11 07:59:09的发言:

CLEAR
input to xx
zz=xx
yy=""
FOR i=2 TO xx
    IF MOD(xx,2)=0 THEN
        yy=yy+"*2"
        xx=xx/2
    ELSE
        if MOD(xx,3)=0 THEN
            yy=yy+"*3"
            xx=xx/3
        ELSE
            IF MOD(xx,5)=0 THEN
                yy=yy+"*5"
                xx=xx/5
                IF MOD(xx,7)=0 THEN
                    yy=yy+"*7"
                    xx=xx/7
                ENDIF
            ENDIF
        ENDIF
    ENDIF
ENDFOR
IF xx<>1
    yy=yy+"*"+allTRIM(STR(xx))
endif
?alltrim(str(zz))+"="+SUBSTR(yy,2,LEN(yy)-1)
不知是否实现了你的想法?


我试了下,含有11,13,17等因子的,就出错了。

四楼的正确

只求每天有一丁点儿的进步就可以了
2020-06-12 12:29
pjtyzyq
Rank: 4
等 级:业余侠客
威 望:6
帖 子:230
专家分:240
注 册:2016-2-14
得分:0 
回复 9楼 wengjl
是的,所有质数都应该排除,该程序十分不严谨。
2020-06-12 14:55



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




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

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