1. 程式人生 > >演算法---判斷101-200之間有多少個素數,並輸出所有素數。

演算法---判斷101-200之間有多少個素數,並輸出所有素數。

演算法—判斷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); //只需要判斷2sqrt(這個數)這個範圍類的就行 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; }