演算法---判斷101-200之間有多少個素數,並輸出所有素數。
阿新 • • 發佈:2019-02-01
演算法—判斷101-200之間有多少個素數,並輸出所有素數。
題目:判斷101-200之間有多少個素數,並輸出所有素數。
程式分析:首先明白什麼是素數,只能被1和本身整除的數,用迴圈遍歷101-200之間的數,然後用101~200間的書整出2到該數前面一個數,比如是113,我們113整除2~112之間的數,只要這裡的數整出都不等於0,則可以判斷這個數是素數;
#include <stdio.h>
int main()
{
int i,j;
int count=0;
for (i=101; i<=200; i++)
{
for (j=2; j<i; j++)
{
// 如果j能被i整出在跳出迴圈
if (i%j==0)
break;
}
// 判斷迴圈是否提前跳出,如果j<i說明在2~j之間,i有可整出的數
if (j>=i)
{
count++;
printf("%d ",i);
// 換行,用count計數,每五個數換行
if (count % 5 == 0)
printf("\n");
}
}
return 0;
}
另一種是用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。 這種方法效率更高,迴圈的次數更少。
#include <stdio.h>
#include <math.h>
int main()
{
int i,j,k,leap=1;
int count=0;
for (i=101; i<=200; i++)
{
k=sqrt (i+1); //只需要判斷2到sqrt(這個數)這個範圍類的就行
for (j=2; j<=k; j++)
{
if (i%j==0)
{
leap=0;
break;
}
}
if (leap)
{
count++;
printf("%d ",i);
if (count % 5 == 0)
printf("\n");
}
leap=1;
}
return 0;
}