求100到200之间所有的素数,有程序:

来源:百度知道 编辑:UC知道 时间:2024/05/14 16:48:08
求100到200之间所有的素数,有程序:
Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
Form1.Width = 12000
For i = 101 To 200
For j = 2 To i - 1
If i Mod j = 0 Then
Exit For
End If
Next j
If j = i Then Print i;
Next i
End Sub
该程序经运行正确。可我有一句不明白,那就是If j = i Then Print i;
我认为,j永远不可能等于i,因为j只在2到i-1之间浮动,没机会等于i,也就是说j=i永远不成立,也就无法打印i了,这是咋回事?当什么情况下才是j=i?

For j = 2 To i - 1
If i Mod j = 0 Then
Exit For

这个循环结束有两种条件
一种是出现i Mod j = 0,此时判定i不是素数
另一种就是一直不出现i Mod j = 0,这种情况下j会从2开始一直累加下去,直到j=i-1并最后一次执行了循环体,就跳出循环了
这时j=i-1,再执行next j就j=i了
这种情况下就判定i是素数,然后打印i

看下面一句:
Next j
If j = i Then Print i;

也就是说你是先j加1在做条件判断,因此j的浮动范围是2到i之间。

我不懂这个语言
我用C++编个
#include<iostream>
using namespace std;
void main()
{
int i,a,s=0,count=0;
for(i=100;i<=200;i++)
{for(a=2;a<=i-1;a++)
if(i%a==0)
break;
if(a==i)
s+=i;count+=1;
}
cout<<"所求素数为:"<<s<<"个数为:"<<count<<endl;
}