题目描述
本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。
输入两个正整数m和n(1≤m≤n≤500),求m和n之间的素数和。
素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。
要求定义并调用函数prime(p)判断p是否为素数,当p为素数时返回1,否则返回0。定义并调用函数prime_sum(m,n),该函数返回区间[m
,n
]内所有素数的和。
输入
两个正整数m和n(1≤m≤n≤500)
输出
见样例
#include <stdio.h>
#include <math.h>
int prime( int p );
int PrimeSum( int m, int n );
int main()
{
int m, n, p;
scanf("%d %d", &m, &n);
printf("Sum of ( ");
for( p=m; p<=n; p++ ) {
if( prime(p) != 0 )
printf("%d ", p);
}
printf(") = %d\n", PrimeSum(m, n));
return 0;
}
int prime( int p )
{
int a=0;
if(p<2) return 0; // m<2时不是素数,直接返回0
else if(p==2) return 1; //m=2时直接返回1
else{
for(int i=2;i<p;i++){ // p 除以 2 ~ p-1 之间的所有整数,若能被整除,则 a+1
if( p%i==0)
a++;
}
//如果 a=0,说明在循环中没有任意一个整数能被 p 整除,即 p 是素数,返回 1
if(a==0) return 1;
//否则返回 0
else return 0;
}
}
int PrimeSum( int m, int n )
{
int sum=0;
if(m<0) m=2;
for( m; m<=n; m++)
{
if(prime(m)==1)
sum=sum+m;
}
return sum;
}