int main() //输出一到一百之间的质数
{
int i,j,sum;
sum = 0;
for ( i = 2; i < 101; i++) //1和0非质数,质数是只能被1和自身整除的数
{
for ( j = 2; j <= i/2; j++) //采一半来减少运算量,数无法被超过数本身的一半的数整除
{
if (i%j==0)
break; //不是质数跳出循环
}
if (j > i/2 )
{
cout << i << "\t"; sum++;
}
if (sum % 5 == 0) //五个质数一行
{
cout << "\n";
}
}
return 0;
}
if (sum % 5 == 0) //五个质数一行
{
cout << "\n";
}
空行是跟这句有关系的。当sum是5的倍数,因为只有现质数sum才会加1, 所以在48,49,50,51,52连续的几个合数sum%5==0一至成立,会导致连续输出空行。
希望有对你有帮助,方便的话请关注下我的博客,我会持续发技术文章,觉得写得还行时欢迎点赞。
有人告诉你问题,我就告诉你怎么解决吧!
加个条件判断即可。
当不是素数时,break后,还得continue跳过后续的操作即可。
#include <iostream>
using namespace std;
int main() //输出一到一百之间的质数
{
int i, j, sum;
sum = 0;
for (i = 2; i < 101; i++) //1和0非质数,质数是只能被1和自身整除的数
{
bool flag = false;
for (j = 2; j <= i / 2; j++) //采一半来减少运算量,数无法被超过数本身的一半的数整除
{
if (i%j == 0) {
flag = true;
break; //不是质数跳出循环
}
}
if (flag) {
continue;
}
if (j > i / 2) {
cout << i << "\t"; sum++;
}
if (sum % 5 == 0) //五个质数一行
{
cout << "\n";
}
}
return 0;
}