赞
踩
C解决统计给定整数M和N区间,输出区间内的素数及其个数并对它们进行求和
例如:
输入:10 31
输出:
11 13 17 19 23 29 31
count = 7 ,sum = 143
思路:
1、素数就是除了1和其本身没有别的
2、可以从2开始设置一个循环,算num%i,若为0,则不是素数,退出循环,否则继续,为了减少复杂度,
可以将循环上限设置为num/2,因为当 i > num/2 时都可以找到已经算过的数字*2=大于num/2
代码:
#include<stdio.h> #include<math.h> #include<stdbool.h> bool isSh(int num) { int i; for (i = 2; i <= num / 2; i++) { if (num % i == 0) { break; } } // 找到最后都没找到num%i==0,就是素数 if (i == num / 2 + 1) { return true; } else { return false; } } int main() { // 找出[M,N]之间的素数并求和 int M, N; scanf_s("%d%d", &M, &N); int count = 0,sum = 0; for (int i = M; i <= N; i++) { if (isSh(i)) { printf("%d ", i); count++; sum += i; } } printf("\ncount = %d ,sum = %d",count, sum); return 0; }
运行结果截图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。