C语言程序设计(第三版)何钦铭著 习题5-4
题目
利用函数计算素数个数并求和∶
输入两个正整数 m 和n(1≤m,n≤500),
统计并输出m 和n之间的素数的个数以及这些素数的和。
要求定义并调用函数 prime (m)判断 m 是否为素数。试编写相应程序。
分析过程
输入
条件:输入两个正整数 m 和n(1≤m,n≤500)
输出
条件:输出m 和n之间的素数的个数以及这些素数的和。要求定义并调用函数 prime (m)判断 m 是否为素数
分析
判断素数的方法:
一个数字如果从2开始至他的一半都没有找到能被整除的数,则说明次数为素数。
但是有特例。如负数,0,1,2需要单独判断
(若还有疑问,建议百度一下)
代码
#include <stdio.h>
#include <math.h>
int prime(int m);/*函数声明*/
int main () {
/*定义变量*/
int m, n; /*定义变量,存储输入两个正整数 m 和n*/
int count = 0; /*定义变量,m-n之间素数数量*/
int sum=0; /*定义变量,m-n之间的素数和*/
/*赋值*/
printf("请输入两个正整数 m 和n:\n"); /*输入提示*/
scanf("%d %d \n", &m, &n); /*输入并赋给变量*/
/*计算*/
for(int i = m; i<n; i++){
if(prime(i) == 1){
printf("%d为素数\n", i); /*输出素数*/
count++;
sum += i;
}
}
printf("%d-%d之间的素数数量为%d,素数和为%d \n", m, n, count, sum); /*输出计算结果*/
return 0;
}
int prime(int m){
if(m<=0) return 0;/*素数必须为正数*/
if(m==1) return 0;/*1为素数*/
if(m==2) return 1;/*2为素数*/
for(int i=2; i<=m/2; i++){
if(m%i==0)/*m能被i整除*/ return 0;
}
return 1;/*m为素数*/
}