一.实验目的与要求
实验目的:(1)掌握函数定义和调用的方法。
(2)掌握函数嵌套调用的方法。
(3)掌握循环语句的使用。
(4)理解实参与形参的对应关系。
实验要求:利用函数计算素数个数并求和:输入两个正整数m 和 n(1<=m, n<=500),统计并输出 m 和 n 之间的素数的个数以及这些素数的和。要求定义并调用函数 prime(m)判断 m 是否为素数。试编写相应程序。
二.实验内容
1.问题分析:
(1)素数是一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;
(2)在数据处理时只需要判读他的因子除了1和他本身就行了,而且只用计算到这个数的开方就行了。
2.程序设计:
#include<stdio.h>
#include<math.h>
int prime(int m);
int main()
{
int m,n,count=0,sum=0;
printf("Enter m:");
scanf("%d",&m);
printf("Enter n:");
scanf("%d",&n);
printf("1<=m && n<=500\n");
for(m=2;m<=n;m++)
if(prime(m)!=0){
count++;
sum=sum+m;
}
printf("count=%d,sum=%d\n",count,sum);
return 0;}
int prime(int m)
{
int i;
if(m==1)
return 0;
for(i=2;i<=sqrt(m);i++)
if(m%i==0){
return 0;}
return m;
}
3.运行过程:
三.实验心得:此次实验相对较难,加之对函数调用这部分内容掌握的不是很好,设计程序比较费力。经查阅资料有了一些头绪,所定义的函数返回值可以有多个定义,而且所定义的函数返回值,可直接用于主函数中。这部分内容知识点较多,要加强练习,以便能熟练使用。