用VB编写一段代码判断输入的数是否素数。

[复制链接]
查看11 | 回复1 | 2019-9-9 21:59:15 | 显示全部楼层 |阅读模式
方法一:一个数n是素数的条件:不能被2 ~ n-1整除用For…….Next语句Dim I as Integer,N As IntegerN=val(InputBox(""))For I=2 to N-1If N Mod I=0 Then Exit For '如果能被2 ~ N-1中任何一个数整除,则不是素数,跳出For循环Next IIf I >= N Then'如果正常跳出For循环,则I跳出循环For后的值应该是N,所以满足这个条件Print N & "是素数"ElsePrint N & "不是素数"End If 方法二:(一般都是用这种方法)一个数n是素数的条件:不能被2 ~ Sqr(n)整除,数学上可以证明1、用For…….Next语句Dim I as Integer,N As IntegerN=val(InputBox(""))For I=2 to int(Sqr(N))If N Mod I=0 Then Exit ForNext IIf I >int(Sqr(N)) Then Print N & "是素数"ElsePrint N & "不是素数"End If6、 用While….Wend循环Dim I As Integer, N As IntegerN = Val(InputBox(""))I = 2c = Int(Sqr(N))Do While Ic ThenPrint N & "是素数"ElsePrint N & "不是素数"End Ife.g.:请输出3~100之间的所有素数。只要在判断上述判断素数的方法外加一个For N=3 To 100………Next N,如使用方法二,如下:For N = 3 To 100 '3~100 For I = 2 To Int(Sqr(N))
If N Mod I = 0 Then Exit For Next I
If I > Int(Sqr(N)) Then Print N & "是素数" else Print N & "不是素数" End IfNext N '3~100e.g.:判断100~200的所有偶数可以分解为两个素数之和。Function nf(n As Integer) As Boolean '判断n是否为素数Dim s As BooleanDim I As Integers = FalseFor I = 2 To Int(Sqr(n)) '如果能被2 ~Int(Sqr(n))中任何一个数整除,则不是素数,跳出For循环If n Mod I = 0 ThenExit ForEnd IfNext IIf I > Int(Sqr(n)) Then '如果正常跳出For循环,则I跳出循环For后的值应该是N,所以满足这个条件s = True '当I是素数时s=trueEnd Ifnf = s '当I是素数时, nf=true,否则 nf=falseEnd FunctionPrivate Sub form_click()Dim t As BooleanDim q As BooleanDim I As IntegerDim j As IntegerDim a As IntegerFor I = 100 To 200 Step 2For j = 2 To I / 2 'I一定可分解为一个大于它一半的数和小于它一半的数t = nf(j) '调用Funtion(函数)nf,判断i是否是素数,把nf的值(true或flase)赋值给变量tIf t = True Then '如果t是true 就往下执行,否则就执行到 End if(2)后面的next j语句q = nf(I - j) '调用Funtion(函数)nf,判断i-j是否是素数,把nf的值(true或flase)赋值给变量qIf q = True Then '如果q是true(说明i-j是素数) 就往下执行,否则就跳到 End if(1),继续执行j循环Print j, I - j '当q是true和t是True同时满足时,说明I的确能分解为两个素数,就打出 j 和 I-j 的值Exit For '跳出j循环,判断下一个偶数End If '(1)End If '(2)Next j Next IEnd Sub
回复

使用道具 举报

千问 | 2019-9-9 21:59:15 | 显示全部楼层
哇,好多代码,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行