主题:[讨论]求助一题!
lu1012
[专家分:20] 发布于 2008-04-28 19:45:00
求助!!分解质因数的程序怎么编?希望给程序的把各段功能及思路说一下![em2]
回复列表 (共6个回复)
沙发
moz [专家分:37620] 发布于 2008-04-28 21:52:00
[url]http://bbs.pfan.cn/post-119249.html[/url]
板凳
蓝色的水晶 [专家分:90] 发布于 2008-04-28 22:04:00
例题:给一个正整数,求出它的因数,并按下面的形式打印出来,
如:36=2*2*3*3 15=3*5
分析:判断一个数I是否为正整数N的因数条件是N MOD I=0,任何 一正整数N的因数都是由若干个从2开始的素数构成。
故求一正整数N的因数首先从2开始判断,若N MOD 2 =0,则:2是N的一个因数,紧接着再判断N/2 MOD 2的值是否为0。如果为0,则2是N的因数,如果不为0,再判断N/2 MOD 3的值是否数0,如果为0,则3是N的一个因数……如此循环。
本题的外循环的循环变量从2至N,内循环由于循环次数不定,因而只能采用WHILE/WEND结构或DO/LOOP结构。
程序:
CLS
INPUT N
PRINT N;“=”;
FOR I=2 TO N
WHILE N MOD I=0
IF N=I THEN PRINT N:END
N=N/I
PRINT I;“*”;
WEND
NEXT I
END
注:可以以N=36这个数据再分析程序,以便真正了解每行程序的含义。
3 楼
Mato完整版 [专家分:1270] 发布于 2008-04-29 13:57:00
我的算法:
先求出2-SQR(n)的所有质数,然后用它们去除n,能除尽的就除,除不尽的就测试下一个质数,直到n=1。
4 楼
Mato完整版 [专家分:1270] 发布于 2008-04-29 14:04:00
DECLARE FUNCTION isprime! (x!)
CLS
INPUT n
PRINT n; "=";
IF isprime(n) THEN PRINT n: END
DIM a(1 TO n \ 2): t = 0
FOR i = 2 TO n \ 2
IF isprime(i) THEN t = t + 1: a(t) = i
NEXT i
FOR i = 1 TO t
DO UNTIL n MOD a(i) <> 0
n = n \ a(i)
IF n > 1 THEN
PRINT a(i); "*";
ELSE
PRINT a(i): END
END IF
LOOP
NEXT i
END
5 楼
世界第一 [专家分:210] 发布于 2008-04-29 16:15:00
cls
input n
for i=2 to sqr(n)
10 if n mod i=0 then print i;"*";:n=n\i:goto 10
next i
print "=";n
end
6 楼
lu1012 [专家分:20] 发布于 2008-05-11 07:51:00
谢谢各位!
我来回复