c语言 为啥中间会出现一大片空白啊

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;
}