用c++求质数的问题,请高手帮帮忙!

来源:百度知道 编辑:UC知道 时间:2024/06/01 04:30:50
#include "iostream.h"
void main()
{
int i,j,index;
for (i=2;i<=100;i++)
{
index=1;
for (j=2;j<i/2;j++)
{
if(i % j==0) index=0;
}
if (index==1) cout<<i<<'\n';
}

}

请问程序的每一句话都是什么意思?

这题目是求0~100之间的所有质数的.
#include "iostream.h"
void main() //这两行没啥好说的
{
int i,j,index; //定义3个变量
for (i=2;i<=100;i++) //外循环,i指2到100之间的所有整数,i的初始值为2,一直到100共循环99次,循环结束时i+1
{
index=1; //先给index附值为1
for (j=2;j<i/2;j++) //内循环,从这里就开始判断i是否是质数,一共循环i 的1/2次,如果都不能整除,那说明i是质数,符合index=1这个条件,然后执行输出语句输出这个i,结束后进入下一次循环判断下一个i是否是质数.
{
if(i % j==0) index=0;
}
if (index==1) cout<<i<<'\n';
}
}

#include "iostream.h"
void main()
{
int i,j,index;
for (i=2;i<=100;i++) //从2到100循环
{
index=1;
for (j=2;j<i/2;j++) //这行有错改为for (j=2;j<=i/2;j++)
{
if(i % j==0) index=0; //如果能整除,将标志设0
}
if (index==1) cout<<i<<'\n'; //如果是质数,显示出来
}

}

这是最简单的使用蛮力法求解质数的程序;
程序开头定义i用于枚举2~100的所有数字,来控制外层的循环。
j用于控制内层的循环,从2到i/2依次枚举数字,看此时的i的值是否可以被j除尽。若可以除尽(if(i % j==0) index=0; )则说明此时