质数的特点就是一个大于1的正整数除了能被整除1和其本身之外任何一个1~到此数之间的正整数都不能将其整除。
private function IsPrime ( Inte as integer) as boolean
dim t as boolean
dim i as integer
if inte = 2 then '如果是2,那么是质数
t = true
else '如果不是2,且是大于2的整数,那么进行循环
for i =2 to inte -1 step 1 '从2开始到小于四数之和的最大整数之间找是否存在能整除的数
if inte/i -fix(inte/i) = 0 then
t = false'如果能整除,那么不是,退出偱环
exit for
else
'如果不能整除,那么将t标为true继续下位数的测试,如果所有都不能整除,偱环自动退出,t依然是true
t =true
end if
next i
end if
IsPrime = t
end function
private sub disPartNum (inte as integer)'分解所输入的四位数的函数
dim th as integer '千位数
dim hu as integer '百位数
dim te as integer'十位
dim si as integer'个位
dim sum as integer'用来求和的
dim des as integer'用来去位的
th = fix(inte/1000)
des = inte - th *1000
hu = fix(des/100)
des = des-hu*100
te = fix(des/10)
des =des - te *10
si = des
sum = th + hu +te + si
if IsPrime(sum) then
msgbox inte & "的千、百、拾、个这四位数之和:" & sum & "是质数"
else
msgbox inte & "的千、百、拾、个这四位数之和:" & sum & "不是是质数"
end if
end sub
private sub command1_click()
dim Nums(3) as integer,inputNums as string,sum as integer'数组存放四个数字,inputNums用于
'接收输入的字符串,sum存放和
inputAgain: '这个用来做错误处理,如果用户输入的不是四位数,跳转回来重新输入
inputNums=inputbox("输入一个四位数","InputBox",1234) '这个语句专门用于输入简单的内容
if Len(inputNums)=4 and isNumeric(inputNums) then '判断用户的输入是否是四位数字,不是的
'话就不要费功夫处理了
dim i as integer
sum=0
for i=1 to 4
Nums(i-1)=val(mid(inputNums,i-1,1)) '转换数据类型并放到数组里,使用数组的目的是简
'化处理的代码
sum=sum+Nums(i-1) '直接累加了,省得再来一次循环
next i
if sum=0 or sum=1 then '这个是质数的定义里明确说明的,相信你明白
me.print "和为" & sum & "不是质数"
goto endMe
end if
if sum>2 then '按照质数的定义(见楼上),2是质数,不需要判断,直接跳过
for i=2 to sum-1
if sum mod i=0 then
me.print "和为" & sum & "不是质数"
goto endMe
end if
next i
end if
else
msgbox "您输入的数貌似不合适啊"
goto inputAgain
'不好意思,我用了goto 语句,希望没有把新手教坏了
'上帝啊,原谅我吧
end if
me.print "和为" & sum & "是质数"
endMe:
end sub
'最后总结一下算法的思路吧,一个程序的算法是程序的灵魂,好的算法能省掉许多不必要的计算
'和代码。
'这里上面的代码判断质数的算法是:
‘1,判断sum是否为0和1,是的话可以确定不是质数,输出结果,转到5;
'2,判断sum是否大于2,是的话转到3,否则不做处理,直接进入4;
’3,从2到sum-1,依次试有没有能够将sum整除的数,一旦有一个,即可以确定不是质数,不需
'要继续判断,转到5;
‘4,输出结果,sum是质数;
'5,程序结束。
'一个算法的几步如果没有使得它发生跳转的条件,会依次执行。
'希望你有所收获,也算对我误导你使用goto语句的补偿
Private Sub Command1_Click()
a=cint(inputbox("输入一个四位数"))
if a<1000 or a>9999 then msgbox a & "不是四位数!":exit sub
for i=1 to 4
b=b+val(mid(a,i,1))
next
print "四个数字之和=";b
for i=2 to a-1
if a mod i=0 then exit for
next
if iend sub
这个很好做啊,我给你这个不仅是4位数了
dim DataSources as string
dim DataLen&,DataLoop&,DataSum&,F&
datalen=len(datasources)
datasum=0
for dataloop=1 to datalen
datasum=datasum+mid(datasources,dataloop)
next
For dataloop= 2 To datasum - 1
If datasum Mod dataloop = 0 Then
F = 1
Exit For
End If
Next i
If F = 1 Then
msgbox "你输入的数是" & datasources & ",该数不是素数。"
Else
msgbox "你输入的数是" & datasources & ",该数是素数。"
End If