2020-11-18
區間素數和(C語言版)
###求素數為原始演算法
問題描述
輸入兩個整數,計算它們之間所有素數的和。例如,輸入10和1,因為在1到10之間有2,3,5和7共4個素數,因此輸出和是17。
輸入描述
兩個以空格隔開的無序整數
輸出描述
一個整數
樣例輸入
-5 5
樣例輸出
10
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d %d",&a,&b);
if(a>b){/*該語句也可用此語段表達:c=a<b?a:b;b=b<a?a:b;c=a;*/
c=a;
a=b;
b=c;
}
if(a<=1) a=2;/*因為素數是自然數,且素數最小為2,所以當輸入的數小於2時,從2開始*/
if(b<=1) b=2;
int i,j,sum=0;
for(i=a;i<=b;i++){/*第一重迴圈的目的是遍歷區間中可能為素數的數*/
for(j=2;j<i;j++){/*第二重迴圈是為了遍歷除數,從2到i-1*/
if(i%j==0){/*如果發現其中有一個i在模j時是等於0的,則此i為非素數*/
break;/*為提高效率,我們在第一次遇到此種情況時便判定此數為非素數 ,不必繼續第二重迴圈,故用break強制結束此重迴圈,繼續第一重迴圈*/
}
}
if(i==j) sum+=i;/*因為若i模了2到i-1中所有的數之後沒有出現為0的情況,所以j最終++後等於i;如其中出現一次i%j==0的情況,則j必然小於i*/
}
printf("%d\n",sum);
return 0;
}