如何判斷一個數是不是素數?

什麼是素數?素數是指大於1的自然數,只能被1它本身整除的數,而無法被其他自然數整除。

 

一、【主函數】

#include<stdio.h>
int isPrime(int x); 
int main()
{
    int i=0,n=0;
    printf("請輸入要判斷的數(>=0):");
    
    scanf("%d",&n);
    
	if(isPrime(n)) 
		printf("%d是素數\n",n);
	else 
		printf("%d不是素數\n",n);
	
	return 0;
}

 

二、【isPrime() 函數】

 

讓n被i除(i從2~n-1),如果n能夠被2~n-1之間的任何一個整數整除,則n肯定不是素數。不足:對於n要循環n-1遍,當n很大時就是n遍。

int isPrime(int x)
{
	int ret=1,i;
	if(x==1|| x==0) ret=0;
	for(i=2;i<x;i++)
		{
			if(x%i == 0)
				{
					ret=0;
					break;
				}
		}
	return ret;
}

 

②去掉偶數後,從3到x-1,每次加2。如果x是偶數,立刻,否則要循環(n-3)2+1遍,當n很大時就是n/2遍

int isPrime(int x)
{
	int ret=1,i;
	if(x==1|| x==0 && x!=2 && x%2 == 0) ret=0; //偶數不是素數 
	for(i=3;i<x;i+=2)//就只判斷奇數 
		{
			if(x%i == 0)
				{
					ret=0;
					break;
				}
		}
	return ret;
}

③ 無須到x-1,到sqrt(x)就夠了。只需要循環sqrt(x)

int isPrime(int x)
{
	int ret=1,i;
	if(x==1 || x!=2 && x%2 == 0) ret=0; //>2 偶數不是素數 
	for(i=3;i<sqrt(x);i+=2)//就只判斷奇數 
		{
			if(x%i == 0)
				{
					ret=0;
					break;
				}
		}
	return ret;
}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章