马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这个题目请写一段程序计算两个数之间的素数。
输入格式:
为两个正整数a和b,(1<a,b<1000)。
输出格式:
当a小于b时,计算开区间(a,b)中的所有素数,并按升序输出,当a>=b时,或该区间没有素数则输出error。
注意:输出的素数之间用一个空格分隔,最后一个素数后面没有空格。
输入样例:
10 20
输出样例:
11 13 17 19
怎么做到让最后一个素数后面没有空格呀!!
我的代码#include <stdio.h>
int main()
{
int a,b,i,m,flag1=1,flag2=1; scanf("%d %d",&a,&b);
if(a < b)
{
for(i = a+1;i < b;i++)
{
flag1 = 1;//重置
for(m = 2;m <= i/2;m++)
{
if(i%m == 0)//判断i是否为素数.
{
flag1 = 0;//要在循环中保持flag1的合理性
break;
}
}
if(flag1)//结果输出,若i是素数,则输出.
{
printf("%-3d",i); flag2 = 0;
}
}
flag2 == 1 ? printf("error") : flag2 = 1;//条件判断用双==
}
else
{
printf("error");
}
return 0;
}
本帖最后由 AFUL 于 2023-10-17 20:56 编辑 #include <math.h>
#include <stdio.h>
bool is_prime_num(int &a){
int b = sqrt(a);
for(int i = 2; i <= b; i++)
if(a % i == 0)
return false;
return true;
}
int main() {
int m, n, i;
bool flag = false;
scanf("%d %d", &n, &m);
if(n < 0) n = 0;
if (n < 2 && m > 2) {
printf("%d", 2);
flag = true;
n = 2;
}
for(i = n+1; i < m; i+=2){
if(is_prime_num(i)) {
flag? printf(" %d", i) : printf("%d", i);
flag = true;
}
}
if (!flag)
printf("error");
return 0;
}
|