题目描述
从键盘输入m,n
在屏幕上按每行10个的格式输出m~n之间的全部素数
输入
两个整数m n
输出
m~n间的素数,每行10个,每个数后用空格隔开。如果m和n为素数则包含。
样例输入
100 200
样例输出
101 103 107 109 113 127 131 137 139 149
151 157 163 167 173 179 181 191 193 197
199
AC代码
#include <cstdio>
#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std;
bool is_prime(int x)
{
//用i枚举2~sqrt(x)之间的数,若x被其整除则不是素数
for (int i = 2;i <= sqrt(x);i++)
{
if (x % i == 0) return false;
}
return true;
}
int main()
{
int m,n;
int cnt = 0;//换行计数器
scanf("%d%d",&m,&n);
//i枚举m和n之间的所有数
for (int i = m;i <= n;i++)
{
if (is_prime(i))
{
printf("%d ",i);
cnt++;
//若将该语句移到if (is_prime(i))外则出现格式错误,因为如果i不是素数,cnt就不会++,cnt的值跟上一次循环的cnt一样 所以又输出一次换行
if (cnt % 10 == 0) printf("\n");
}
}
return 0;
}
比如…
所以下面这个代码…×
#include <cstdio>
#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std;
bool is_prime(int x)
{
//用i枚举2~sqrt(x)之间的数,若x被其整除则不是素数
for (int i = 2;i <= sqrt(x);i++)
{
if (x % i == 0) return false;
}
return true;
}
int main()
{
int m,n;
int cnt = 0;//换行计数器
scanf("%d%d",&m,&n);
//i枚举m和n之间的所有数
for (int i = m;i <= n;i++)
{
if (is_prime(i))
{
printf("%d ",i);
cnt++;
}
if (cnt % 10 == 0) printf("\n");
}
return 0;
}