统计素数并求和(自定义函数法)

7-6 统计素数并求和 (10分)
本题要求统计给定整数M和N区间内素数的个数并对它们求和。

输入格式:
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。

输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。

输入样例:

10 31

输出样例:

7 143

为了以后的方便,本题采用自定义函数的形式,判断一个数是否为素数

#include <stdio.h>
#include<math.h>
int sushu(int s);
int main()
{
	int a,b,i;
	int s1=0,s2=0;
	scanf("%d %d",&a,&b);
	for(i=a;i<=b;i++){
		if(sushu(i)==1){
			s1=s1+1;
			s2=s2+i;
		}
	}
	printf("%d %d",s1,s2);
    return 0;
}
int sushu(int s){
	int f=1;
	if(s<2){
		return 0;
	}
	else{
		for(int i=2;i<=sqrt(s);i++){//i<s/2也可以,但是会增加循环次数,择优采用
			if(s%i==0){
				f=0;
			}
		}
		if(f==1){
			return 1;
		}
		else{
			return 0;
		}
	}
}

注意点
①1要单独判断,因为1因子只有它本身,所以质数从2开始
②条件i<=sqrt(s),别忘了等于号!!!

发布了10 篇原创文章 · 获赞 0 · 访问量 90

猜你喜欢

转载自blog.csdn.net/weixin_45734902/article/details/103975509