编写一个程序,求出【a,b】范围内的素数。
输入格式:
输入数据有多组,每组占一行,输入两个数a,b。(整型范围内)
输出格式:
输出【a,b】区间内的素数,空格隔开。(2<=a,b<=10000)
输入样例:
在这里给出一组输入。例如:
5 10
3 15
输出样例:
5 7
3 5 7 11 13
解决方案:
首先要明确素数
如果一个自然数n大于1,并且对于任何自然数1<a<n,n都不能被a整除,那么n就是一个素数
判断不难,但这个解题最难的一点是如何保证输出的数字之间有间隔,并且行末不得有空格!
我的思路是先计算出素数再储存到数组内,再分开输入
一组简单的代码如下
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
int isprime(int x)
{//求素数函数
int flag = 1;
for (int i = 2; i <= sqrt(x); i++) {
if (x % i == 0 && x != 2) {
flag = 0;
break;
}
}
return flag;
}
int main() {
int a, b;
int i;
int m[20];//用于储存素数
int n = 0;
scanf("%d %d", &a, &b);
for (i = a; i <= b; i++) {
if (isprime(i)) {
m[n] = i;
n++;
}//是素数则储存进数组内
else continue;
}
for (i = 0; i < n - 1; i++) {
printf("%d ", m[i]);//输出前几个数组和空格
}
printf("%d", m[n - 1]);//单独输出最后一个数组,无需空格
printf("\n");
n = 0;//将n清零,方便下一次计算素数范围
return 0;
}
如果想要变成多组也简单,只需要在代码外再嵌套一层循环,如while循环