问题描述
编程输入两个整数a,b(2<=a<b),输出整数区间[a,b]内的所有素数(测试数据中保证区间内有素数)。区间[a,b]内的所有素数,逗号分隔。
问题关键
1.进行素数判断(素数是指因数只有1和它本身的数)
2.逗号分隔问题,保证每个数之间都有逗号,并且末尾无逗号
问题思路
1.利用for循环游历1~n,逐个判断是否为n的因数,若是其因数,计数器count++,游历结束以后,若count==2,则这个数为素数,就进行打印输出。
2.分隔符问题有两个思路,第一可以在打印素数的同时,打印一个逗号,最后用退格符消除最后多打印的逗号。第二个思路则是在打印素数的同时,在素数的前面打印一个逗号,第一次打印时,不打印逗号。
代码实现
思路一
#include<stdio.h>
int main()
{
int a, b, count = 0;
scanf("%d%d", &a, &b);
for (int i = a; i <= b; i++)
{
count = 0;
for (int j = 2; j < i; j++)
{
if (i % j == 0)
{
count++;
}
}
if (count == 0)
{
printf("%d,", i);
}
}
printf("\b");
return 0;
}
思路二
#include<stdio.h>
int main()
{
int a, b, count = 0, s = 0;
scanf("%d%d", &a, &b);
for (int i = a; i <= b; i++)
{
count = 0;
for (int j = 2; j < i; j++) //进行游历来判断素数
{
if (i % j == 0)
{
count++;
}
}
if (count == 0)
{
s++;
}
if (count == 0) //在count=0的条件下,也就是在素数的条件下进行下一步判断
{
if (s == 1) //判断是第几个素数
{
printf("%d", i);
}
else
{
printf(",%d", i);
}
}
}
return 0;
}
注意!!
思路二一定要在判断素数的前提下在进行判断是第几个素数,如果没有这个先导条件,那么就会无条件打印所有的数