/纯C语言/
#include "stdioh"
#include "mathh"
int sushu(int n)
{ int i;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
return 0;
return 1;
}
main()
{int i;
for(i=202;i<=1000;i++)
if(sushu(i)&&sushu(i-2))
printf("%d %d\n",i-2,i);
getch();
}
写程序太麻烦。告诉你方法吧。设i=2先判断输入的整数是否为1和2
。如果是1,直接反回索数。如果是2反回非素数。如果不是1,2。则进入循环把整数除i
,判断余数>0并且i<整数,i++。一旦出现余数=0侧为反回非素数,如果循环完了还没有,反回素数。原理:是素数只1与自身整除。
具体是这样子的:
从For i = 1 To 100到next i这是一个完整的for循环,而For j = 2 To i - 1到next j是一个内层循环,外层循环用来控制数字是几,就是1到100么,内层是x当作标记来看,给他附初值,0,然后开始内层循环就是那个 j 循环,开始判断素数,什么时素数?就是不能被1和他本身整除的数字,就是素数,这样可以设置最大循环判断的那个数字是比她小的,其实可以改为i/2,也是对的,甚至是sqr(i)也可以,x是一个标志,如果可以被一个数字整除,那么x就不是1了,再循环结束的时候进行判断,如果还是0,那么说明是素数,在窗体上输出,如果不是0,就不是素数了呗,什么也不做,进行下一个循环!
纯手打……不含假……不懂追问我,谢谢
望采纳,谢谢
回答“以上的为什么 I是大于或者等于N呢 假如输入15 那N=15,循环的就是2到14,循环13次,I是13”:
I循环的就是2到14,都不满足Exit For的条件。所以I=14的循环是正常结束的。会遇到End If,所以会自动增1,于是变成I=15。
所以,下面的IF语句是可以修改为如下的:
If I = N Then'如果正常跳出For循环,则I跳出循环For后的值应该是N,所以满足这个条件
Print N & "是素数"
Else
Print N & "不是素数"
Public Function IsSushu(ByVal pa As Integer) As Boolean
Dim pb As Integer = pa - 1
Dim res As Boolean = True
For i = 2 To pb
If pa Mod i = 0 Then
res = False
Exit For
End If
Next i
Return res
End Function
Private Sub Button2_Click(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles Button2Click
Dim pre As Integer
Dim str As String
str = ""
pre = 2
For i = 1 To 1000
If IsSushu(i) Then
If i - pre = 2 Then
str = str & i & " " & pre & vbCrLf
End If
pre = i
End If
Next
TextBox1Text = str
End Sub
运行结果:
5 3
7 5
13 11
19 17
31 29
43 41
61 59
73 71
103 101
109 107
139 137
151 149
181 179
193 191
199 197
229 227
241 239
271 269
283 281
313 311
349 347
421 419
433 431
463 461
523 521
571 569
601 599
619 617
643 641
661 659
811 809
823 821
829 827
859 857
883 881
以上就是关于vb 编写程序找出1~100之间所有的孪生素数全部的内容,包括:vb 编写程序找出1~100之间所有的孪生素数、VB判断是否为素数、VB编程输出100以内的素数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)