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;
}