C++程序小问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 08:44:54
小弟新手,有一道例题,要求输出100到200间的所有素数,原例是这样的:#include <iostream.h>
#include <math.h>
#include <iomanip.h>
void main()
{
int a,k,i,n;
n=0;
for(a=100;a<=200;i++)
{
k=sqrt(a);
for(i=2;i<=k;i++)
if(a%i==0)
break;
if(i>k)
{
cout<<setw(12)<<a;
n=n+1;
if(n%5==0)
cout<<endl;
}
}
cout<<endl;
}
我看不懂的是嵌套的那个FOR循环下面的i<k,是什么意思,书上只说这样可以确定输出素数。请有空的高手为小弟讲解一下。
如何嵌套的那个FOR循环做玩的话,那么它后面的break;语句是跳到程序的哪行的`???

sqrt
计算素数到平方根就可以了
平方根以上就重复了

补充:
就到for外面一级:
if(i>k)
{
cout<<setw(12)<<a;
n=n+1;
if(n%5==0)
cout<<endl;
开始

for(a=100;a<=200;i++) 中的i应该是 a 吧?
这是一个数学问题,怎么样知道一个数 n 的是不是素数呢?只要让n去除 2到 n的根号的所有的数,如果都除不尽,则这个n 就是素数。

哪里有“i<k”?
如果你说的是“i>k”,
我可以告诉你,
这代表上面的for循环做完了。
因为嵌套的for循环是为了判断是不是质数。
如果循环做完了,就代表是质数了。

我在C++Builder上运行了一下。在C++中break只能跳出当前循环。Java可以跳出多重循环。跳出循环后接着应该是判断if(i>k)的语句运行了。