C++ 一个关于用while循环语句求质数的问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 07:23:39
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int i,j,k,flag;
i=2;
while(i<=100)
{

flag=1;
k=sqrt(i);
j=2;
while(j<=k)
{
if(i%j==0)
{
flag=0;
break;
}
j++;
}
if(flag)
cout<<i<<"质数"<<endl;
i++;
}
}

这是书上的程序 小弟初学 实在看不动 谁能给我解释详细点``

i,j,k,flag的数值随着运算的变化 还有那个if(flag)

谢谢各位大虾了``

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int i,j,k,flag;
i=2;
while(i<=100) //i为所取1~100数,1明显排除,由2开始
{

flag=1; //标志初值为1
k=sqrt(i); //k为i的平方根取整数
j=2; //j做为除数
while(j<=k) //j取2到k,k已在上解释
{
if(i%j==0) //如果i能被j整除
{
flag=0; //标志置0
break; //跳出while(j<=k)的循环
}
j++; //否则j++,继续while(j<=k)的循环
}
if(flag) //跳出while(j<=k)的循环后,如果标志为1,即是j>k时而不是i能被某一j整除时跳出的
cout<<i<<"质数"<<endl; //打印质数i
i++; //i++,继续外层循环
}
}

xiaotnai 解释的很好了~

.素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任
何其它两个整数的乘积。例如,15=3*5,所以15不是素数;又如,12
=6*2=4*3,所以12也不是素数。另一方面,13除了等于13*1以
外,不能表示为其它任何两个整数的乘积,所以13是一个素数

先搞懂 什么是 质数~ 就不看 理解下面的 程式啦~

if(flag) 当flag为0的时候 就会执行cout<<i<<"质数"<<endl;
flag不是0 就会跳过cout<<i<<"质数"<<e