6-1 使用函数求素数和(20 分)

遇到的问题:

  1. 做题时提交了从#include <stdio.h>到末尾函数定义的全段代码,编译错误:main()函数重定义。原来只提交两个自写函数的定义代码段即可,不过编译器给出警告说用户忽视了函数scanf()的返回值,这是出题者所给的前驱代码引起的。。。

题目代码:

#include <stdio.h>
#include <math.h>

int prime( int p );  
/*判断整数p是否为素数,是返回1,不是返回0*/
int PrimeSum( int m, int n ); 
/*返回闭区间[m,n]上所有素数之和(题目保证m<=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));
    // 手动调试自写函数
    // printf("%d\n", prime(7));
    // printf("%d\n", PrimeSum(-1, 10));

    return 0;
}
int prime(int p){
    int isPrime=1;
    int i;
    if(p<2){
        isPrime = 0;
    }
    else{
        for(i=2; i<=(int)sqrt(p); i++){ 
        /*若p为合数,则必有不大于sqrt(p)的因子*/
            if(p%i == 0){
                isPrime = 0;
                break;
            }
        }
    }
    return isPrime;
}

int PrimeSum( int m, int n ){
    int sum=0;
    int i;
    for(i=m; i<=n; i++){
        if(prime(i)){
            sum += i;
        }
    }
    return sum;
}

猜你喜欢

转载自blog.csdn.net/qq_36913610/article/details/80967411