判断两数是否都为素数并按要求统计输出

7-1判断两数是否都为素数井按要求統计输出。

本题目要求读入2个正整数a和b(设输入能保证b>a),如果a、b都是素数,则输出;闭区间[a,b]内的所有素数并求平均值;否则,输出闭区间[a,b]之内的所有5的倍数。
输入格式:
在一行中给出2个整数a和b,用空格隔开(确保b>a)。
输出格式:
在一行中输出结果。如a、b都是素数的情况,平均值ave保留一位小数。(所有数据间的字符是英文符号,无空格)
输入样例:
1731
输出样例:
17,19,23, 29,31, ave=23.8
输入样例:
15 31
输出样例:
15,20,25,30,

望采纳

下面是完成的 C++ 代码示例:

#include 
#include 

using namespace std;

// 判断一个数是否为素数
bool is_prime(int n) {
  // 如果 n <= 1,则 n 不是素数
  if (n <= 1) return false;

  // 如果 n 等于 2,则 n 是素数
  if (n == 2) return true;

  // 如果 n 为偶数,则 n 不是素数
  if (n % 2 == 0) return false;

  // 枚举 n 的奇数因子
  for (int i = 3; i <= sqrt(n); i += 2) {
    if (n % i == 0) return false;
  }

  // 如果 n 没有奇数因子,则 n 是素数
  return true;
}

int main() {
  int a, b;
  cin >> a >> b;

  // 如果 a、b 都是素数
  if (is_prime(a) && is_prime(b)) {
    int count = 0;
    double sum = 0;

    // 遍历区间 [a, b]
    for (int i = a; i <= b; i++) {
      // 如果 i 是素数,更新统计结果
      if (is_prime(i)) {
        count++;
        sum += i;
      }
    }

    // 输出结果
    cout << count << " " << sum / count << endl;
  } else {
    // 遍历区间 [a, b]
    for (int i = a; i <= b; i++) {
      // 如果 i 是 5 的倍数,输出 i
      if (i % 5 == 0) cout << i << " ";
    }
    cout << endl;
  }

  return 0;
}
#include <stdio.h>
int isprime(int x)
{
    int i;
    if(x<2)return 0;
    for(i=2;i*i<=x;i++)
        if(x%i==0)return 0;
    return 1;
}

int main()
{
    int a,b,i,count=0;
    float ave;
    scanf("%d%d",&a,&b);
    if(isprime(a) && isprime(b))
    {
        ave=a+b;
        count=2;
        printf("%d,",a);
        for(i=a+1;i<b;i++)
        {
            if(isprime(i))
            {
                ave+=i;
                count++;
            }
        }        
        printf("%d,ave=%.1f",b,ave/count);
    }
    else
    {
        for(i=a;i<b+1;i++)
        {
            if(i%5==0)printf("%d,",i);
        }
    }
    return 0;
}