練習4-11 統計素數並求和
阿新 • • 發佈:2018-12-12
練習4-11 統計素數並求和 (20 分)
本題要求統計給定整數M和N區間內素數的個數並對它們求和。
輸入格式:
輸入在一行中給出兩個正整數M和N(1≤M≤N≤500)。
輸出格式:
在一行中順序輸出M和N區間內素數的個數以及它們的和,數字間以空格分隔。
輸入樣例:
10 31
輸出樣例:
7 143
程式碼:
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<math.h> int IsPrime(int num) { int ret = 1;//預設是素數 if (num == 1 || (num!=2&&num % 2 == 0)) { ret = 0; } for (int i = 2; i <= sqrt(num); i++) { if (num%i == 0) { ret = 0; break; } } return ret; } int main() { int m, n,num; int sum = 0; int count = 0;//記錄素數的個數 scanf("%d %d", &m, &n); for (int num = m; num <= n; num ++) { int ret = IsPrime(num); if (ret == 1)//是素數 { //printf("%d ", num); count++; sum = sum + num; } } printf("%d %d", count, sum); system("pause"); return 0; }
分析:本題並不難,主要是兩點:
(1)判斷素數
(2)給定數字範圍中素數的求和
關於優化,(除2以外的偶數不是素數),這裡可以在主函式中跳過奇數也可以在判斷素數的函式中使用if語句排除偶數
測試結果: