求用VB编一个分解质因数的程序

如题所述

Private Sub Command1_Click()Dim M As IntegerM = Val(InputBox("输入一个整数:"))Print M & "=";Do While M <> 0For I = 2 To MIf M Mod I = 0 ThenPrint I;M = M \ IExit ForEnd IfNextIf M = 1 Then Exit DoPrint "*";LoopEnd Sub从百度百科上抄袭来的。呵呵。另外,上面的程序也可以从2到sqrt(M)来除。没必要到M,因为大于sqrt(M)的,一定有一个小于sqrt(M)的对应。可以省掉一定的运算量。每个合数都可以写成几个质数相乘的形式。其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。 分解质因数只针对合数Dim x, a, b, k As String Private Sub Command1_Click() a = Val(Text1.Text) x = 2 If a <= 1 Or a > Int(a) Then If a = 1 Then Text2.Text = "它既不是质数,也不是合数" Else MsgBox "请您先输入数据", vbOKOnly + vbInformation, "友情提示" End If Else Do While a / 2 = Int(a / 2) And a >= 4 If b = 0 Then Text2.Text = Text2.Text & "2" b = 1 Else Text2.Text = Text2.Text & "*2" End If a = a / 2 k = a Loop Do While a > 1 For x = 3 To Sqr(a) Step 2 Do While a / x = Int(a / x) And a >= x * x If b = 0 Then Text2.Text = Text2.Text & x b = 1 Else Text2.Text = Text2.Text & "*" & x End If a = a / x Loop Next k = a a = 1 Loop If b = 1 Then Text2.Text = Text2.Text & "*" & k Else Text2.Text = "这是一个质数" End If End If End Sub Private Sub Command2_Click() Text1.Text = "" Text2.Text = "" End Sub
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-08-10

Private Sub Command1_Click()
  n = CLng(InputBox("N="))
  i = 2
  Print n; "=";
  While i * i <= n
    While n Mod i = 0
      Print i;
      n = n \ i
      If n > 1 Then Print "*";
    Wend
    i = i + 1
  Wend
  If n > 1 Then Print n;
  Print
End Sub

本回答被网友采纳

9997是质数还是合数?
Caption = "分解质因数"ClientHeight = 3150 ClientLeft = 60 ClientTop = 390 ClientWidth = 4680 LinkTopic = "Form1"ScaleHeight = 3150 ScaleWidth = 4680 StartUpPosition = 3 '窗口缺省 Begin VB.TextBox b Height = 1935 Left ...

VB中求最大公约数的方法
Private Function gcd(x As Integer, y As Integer) As Integer Dim div As Integer If x < y Then div = x Else div = y End If While div > 1 If x Mod div = 0 And y Mod div = 0 Then gcd = div Exit Function Else div = div - 1 End If Wend gcd = 1 End Function...

c++中1~2006中所有的完数及因子
下面是我用VB编的一个分解质因数的程序的一部分,你选择一下,2006中所有的因子,我都有,这里放不下 For k = X To Y Print #1, k; "的因数有:";s = 0: i = 1: If Int(k \/ 2) = k \/ 2 Then d = 1 Else d = 2 '奇数时只去除以奇数 Do While i <= Sqr(k)If Int(k \/...

VB中判断闰年和判断水仙花数的程序是什么?
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。【程序4】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印...

VB中角度化为弧度的代码?
const PI=3.14159 '定义常数π,这里取5位小数,可以根据需要修改 Dim an as single,result as signle an=30.303312345 '获得输入值 result = an * PI\/180 ‘按原值计算弧度值,保留所有的小数 Text1.Text = Format(result,"0.000") '输出转换后的值,根据需要设置小数位数,这里是保留3位...

快速学习QB
不过说不难也有点要想的,就比如分解质因数 for i=2 to x是最笨的 for i=2 to sqr(x)还是是比较笨的 2先算,然后i=3:for i=i to sqr(x) step 2就更好 自己想程序的时候多琢磨琢磨,就会对程序更了解了。你不妨入门之后试试看我那3道题目的。我在这个环境做了不少游戏了,也是从...

谁由1000以内质数表
1000以内质数表如下:质数表的 质数又称 素数。指整数在一个大于1的 自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个 正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为 合数。1和0既非素数也非合数。素数在 数论中有着很重要的地位。

VB 6 如何剔除文本框中重复的数字
用2维 不定上线数组 a(1,1)=2 [内容数字] a(1,2)=3 [数字出现的数量]for mid instr left 这些东西就够了

小学四年级数学日记之选做题
于是,我开始分辩这两个数各是哪个数。 最后,我得到了结果,为374立方厘米。我的算式是:209=11×19 19=2+17 11×2×17=374(立方厘米) 后来,我又用我本学期学过的知识:分解质因数验算了这道题,结果一模一样。 解出这道题后,我心里比谁都高兴。我还明白了一个道理:数学充满了奥秘,等待着我们去探求。

c++编程题 编写函数实现求n!,主程序要求输入n的值,用函数调用的方式求n...
\/\/注意,限于整型数据的数据范围,所以实际上这个程序只能求n<=12的情况。如果想求更大的,必须为这个阶乘自定义一个数据类型。#include<iostream>using namespace std;int fact(int n);int main(){ int n; cout<<"求n!,请输入n:\\n"; cin>>n; cout<<fact(n)<<endl; return 0;}\/\/下面是使用递归函...

相似回答