1. 程式人生 > >【C語言】【程式設計練習】判斷100到200之間的素數

【C語言】【程式設計練習】判斷100到200之間的素數

素數:素數又稱質數,有無限個一個大於1的自然數,除了1和它本身外,不能被其他自然數整除,換句話說就是該數除了1和它本身以外不再有其他的因數;否則稱為合數。

解題思路:首先將100-200之間的數依次拿出來,除以比它小的數(1和它本身除外),若餘數都不為0,則此數為素數 
下面為主要程式程式碼:文中計數的作用:如果所得到的餘數有為0的;就將計數置為1,如果所有的餘數都不為0;那麼計數依然為0; 
後面只需根據計數的值來判斷是不是素數
for(i=100; i<=200; i++)
    {
        count = 0;//每選一個數就將count置0.
        for(j=2; j<i; j++)
        {
            if
(i%j == 0)//如果所得到的餘數有為0的;就將count置為1 count = 1; } if(count == 0) printf("%d\t",i); }

完整程式碼:

#include<stdio.h>
int main()
{
    int i = 0;
    int j = 0;
    int count = 0;
    for(i=100; i<=200; i++)
    {
        count = 0;//每選一個數就將count置0.
        for(j=2; j<i; j++)
        {
            if
(i%j == 0)//如果所得到的餘數有為0的;就將count置為1 count = 1; } if(count == 0)//如果count為0,那麼輸出i printf("%d\t",i); } printf("\n"); return 0;

但是以上程式碼的時間複雜度有點高,還需改進。

改進如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main() { int i = 0; int j = 0; int count = 0; for(i=100; i<=200; i++) { count = 0; for(j=2; j<sqrt((long double)i); j++)//當i除到根號下i時就可以判斷是不是素數了 { if(i%j == 0) count = 1; if(count == 1)//只要有一次count為1,那說明i不是素數 break;//break可以跳出並結束迴圈 } if(count == 0) printf("%d\t",i); } printf("\n"); system("pause"); return 0; }