【C語言】【程式設計練習】判斷100到200之間的素數
阿新 • • 發佈:2019-02-13
素數:素數又稱質數,有無限個一個大於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;
}