回 帖 发 新 帖 刷新版面

主题:分解质因数

我不记得什么时候写过了,所以又重新写了一次。
因为类型及字符串长度的限制,所以以单整形为限


DefInt A-Z

s$ = ZhiSu$(32760, 6)
Print fenjie$(9 * 8 * 13 * 5, s$, 6)

Function fenjie$(x, s$, n)
k$ = RTrim$(LTrim$(Str$(x))) + "="
If x = 0 Then
   fenjie$ = "0=0"
   Exit Function
ElseIf x < 0 Then
  x = -x
  k$ = k$ + "-1"
End If
i = 2
j = 1
Do Until x = 1
    If x Mod i = 0 Then
        x = x / i
        If Right(k$,1)="=" Then k$=k$+LTrim$(Str$(i)) Else k$=k$+"*"+LTrim$(Str$(i))
    Else
        j = j + n
        i = Val(Mid$(s$, j, n))
    End If
Loop
fenjie$ = k$
End Function

Function ZhiSu$(x, n)
k$=Space$(n-1)+"2"+Space$(n-1)+"3"+Space$(n-1)+"5"+Space$(n-1)+"7"
For m = 11 To x Step 2
    q = Sqr(m)
    For i = n + 1 To Len(k$) Step n
        r = Val(Mid$(k$, i, n))
        If m Mod r = 0 Then Exit For
        If r > q Then i = Len(k$) + n
    Next
    If i > Len(k$) Then k$ = k$ + Right$(Space$(n) + Str$(m), n)
Next
ZhiSu$ = k$ + " "
End Function

回复列表 (共4个回复)

沙发

太麻烦了!!
CLS
INPUT n
a = n
s = 1
2 FOR i = 2 TO SQR(n)
s = s + 1
IF n / i <> n \ i THEN GOTO 1 ELSE n = n / i: PRINT i; "*"; : GOTO 2
1 NEXT i
IF s <> (SQR(n) - 2 + 1) THEN PRINT n; "="; a

试试,应该对!

板凳

嗯,被你提醒了,我还在奇怪为什么找不到我以前写过的代码。
原来是我忘记了分解质因数的方法了。
适用于少量运算。


deflng a-z
function FenJie$(x)
k$ = RTrim$(LTrim$(Str$(x))) + "="
i=2
do until x=1
   if x mod i=0 then
      x=x\i
      k$=k$+ltrim$(str$(i))+"*"
   else
      i=i+2+(i=2)
      if i>sqr(x) then i=x
   endif
loop
FenJie$=left$(k$,len(k$)-1)
end function

3 楼

Cls
Input n
s = 1
Do
  s = s + 1
  If n Mod s = 0 Then n = n / s: Print s;"*";: s = s - 1 
Loop Until n / (s + 1) = 1
Print s + 1
End

4 楼

??

我来回复

您尚未登录,请登录后再回复。点此登录或注册