PTA 7-477 判断两数是否都为素数并按要求统计输出。
分数 7
作者 苑丽红
单位 长春理工大学
本题目要求读入2个正整数a和b(设输入能保证b>a),如果a、b都是素数,则输出闭区间[a,b]内的所有素数并求平均值;否则,输出闭区间[a,b]之内的所有5的倍数。
输入格式:
在一行中给出2个整数a和b,用空格隔开(确保b>a)。
输出格式:
在一行中输出结果。如a、b都是素数的情况,平均值ave保留一位小数。(所有数据间的字符是英文符号,无空格)
输入样例:
17 31
输出样例:
17,19,23,29,31,ave=23.8
输入样例:
15 31
输出样例:
15,20,25,30,
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <stdio.h>
int prime(int n){ //素数判断
if(n == 2) //特殊情况
return 0; //是素数
int flag = 0; //默认是素数
for(int i = 2; i < n; i++){
if(n % i == 0) //不是素数
flag = 1;
}
return flag;
}
int main(){
int a, b;
scanf("%d %d", &a, &b);
int sum = 0, count = 0; //素数和sum; 素数个数count
double ave; //素数平均值
if(prime(a)==0 && prime(b)==0){ //都是素数
for(int i = a; i <= b; i++){ //范围
if(prime(i) == 0){
sum += i; //素数和
count++; //素数个数
printf("%d,", i);
}
}
ave = (double)sum / count; //素数平均值
printf("ave=%.1lf\n", ave);
}else{
for(int i = a; i <= b; i++){ //范围
if(i % 5 == 0) //5的倍数
printf("%d,", i);
}
printf("\n");
}
return 0;
}
解题思路:
step1:定义一个函数判断素数
step2:键入数据并调用函数判断是否都是素数
step3:若是,则输出两个数据之间的所有素数和素数平均值
step4:若不是,则输出两个数据之间所有是5的倍数的数
归属知识点:
函数
循环结构
条件判断