中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言輸入一個數判斷是否為素數的方法有哪些

發布時間:2023-04-24 17:28:31 來源:億速云 閱讀:177 作者:iii 欄目:開發技術

這篇文章主要介紹“C語言輸入一個數判斷是否為素數的方法有哪些”,在日常操作中,相信很多人在C語言輸入一個數判斷是否為素數的方法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C語言輸入一個數判斷是否為素數的方法有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

 需要解決這個問題,首先我們要明白-------->什么是素數?

(質數)素數是指在大于1的自然數中,除了1和它本身以外不再有其他因數的自然數。

舉個例子:4  可以 由2*2=4  和1*4 得到,不符合素數的條件,所以不是素數。

                  5  只能由1*5 得到,符合素數的條件,所以是素數。

1.  第一種方法

這種方法的思想也是最直接最普遍的,假設這個數是n,我們需要判斷素數,我們就拿這個數和從(2~~n-1)的每個數去和這個數做取余操作,如果有一個數可以使得余數為0,則這個數不是素數,反之則這個數為素數。

好了接下來我們用代碼實現

#include <stdio.h>
int main()
{
	int i=0;
	int j=0;
	printf("輸入一個數 "); 
	scanf("%d",&j);
    for(i=2;i<j;i++)
  {
  	if(j%i==0)
  	{
  		printf("%d 不是素數",j); 
  		break;
	  }
  }
    if(j==i)
    {
    	printf("%d 是素數",j); 
	}
	if(j==1)
	{
			printf("%d 不是素數",j); 
	}
	return 0;
	
 }

C語言輸入一個數判斷是否為素數的方法有哪些

 代碼的具體實現就在上面,可能有的同學對if語句中為什么當j==i時,就輸出是素數。

 不要著急,我給大家捋捋思路,我們可以思考一下,如果在(2~~j-1)中的每一個數都沒滿足取余操作后余數為0,那這時我的 i 應該 等于j-1,但我們的 i 由于滿足i<j還會繼續進行++操作,然后我的 i 就等于j ,此時已經不滿足i <j 的條件,我們就會跳出for循環,此時我們就可以認為,當 i==j時,這個數為素數。

2.第二種方法

我們對第一種方法進行優化,我們通過下述例子分析可知,每個數的因數中,其中一個不會超過本身的1/2,所以我們可以利用這個思想對代碼進行優化。

我們其實并不需要對(2~~n-1)的全部數進行上述操作,我們可以只對(2~~n/2)的全部數進行上面的操作就可以了,這樣可以簡化我們的計算范圍。

舉個例子:4  可以 由2*2=4  和1*4 得到,因數 2,2或1,4,每組其中的一個因數不大于自身(4)的1/2。

好了接下來我們用代碼實現

#include <stdio.h>
int main()
{
	int i=0;
	int j=0;
	printf("輸入一個數 "); 
	scanf("%d",&j);
	
	for(i=2;i<=j/2;i++)
 {
	if(j%i==0)
		{
			printf("%d 不是素數",j);
			break;
		}
 }
     if(j==1)
		{
			printf("%d 不是素數",j);
		
		}
	if((i>j/2) && (j!=1))
	{
		printf("%d 是素數",j);
	}
	
	return 0;
}

C語言輸入一個數判斷是否為素數的方法有哪些

3.第三種方法

我們對第二種方法進行優化,我們通過下述例子分析可知,每個數的因數中,其中一個不會超過本身的開方,這樣我們又縮小了我們的計算范圍,所以我們可以利用這個思想再次對代碼進行優化。

舉個例子:16 可以 由1*16,2*8和4*4,得到,因數1,16和2,8和4,4每組其中的一個因數不大于本身(16)的開方(4)。

好了接下來我們用代碼實現

#include <stdio.h>
#include<math.h>
int main()
{
	int i=0;
	int j=0;
	printf("輸入一個數 "); 
	scanf("%d",&j);
	
	for(i=2;i<=sqrt(j);i++)
 {
	if(j%i==0)
		{
			printf("%d 不是素數",j);
			break;
		}
 }
     if(j==1)
		{
			printf("%d 不是素數",j);
		
		}
	if((i>sqrt(j)) && (j!=1))
	{
		printf("%d 是素數",j);
	}
	
	return 0;
}

C語言輸入一個數判斷是否為素數的方法有哪些

 因為用到了數學中開平方的函數,所以引用了多一個庫,這個不做過多講解,大家自行去了解。

當然判斷素數不知有上述的方法,還可以通過函數進行實現。

4.第四種方法(函數實現)

具體的代碼思想和第一種方法一樣,不再講解。

好了接下來我們用代碼實現

#include <stdio.h>
int judge(int n)
{
	int i=0;
	for(i=2;i<n;i++)
	{
		if(n%i==0)
		return 0;
	}
	if(n==1)
	{
		return 0;
	}
	return 1;
}
int main()
{
 
	int j=0;
	printf("輸入一個數"); 
	scanf("%d",&j);
	  if(judge(j)==1)
	  printf("%d 是素數",j);
	else
	printf("%d 不是素數",j);
	return 0;	
}

C語言輸入一個數判斷是否為素數的方法有哪些

到此,關于“C語言輸入一個數判斷是否為素數的方法有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

温州市| 夹江县| 海门市| 永靖县| 淄博市| 肥城市| 新野县| 穆棱市| 遵化市| 施秉县| 大竹县| 鄱阳县| 错那县| 慈溪市| 三亚市| 宜宾市| 晋中市| 海口市| 福贡县| 循化| 新宁县| 黄大仙区| 通山县| 佛坪县| 邯郸县| 嵊泗县| 西乌珠穆沁旗| 当阳市| 应城市| 罗源县| 鄂州市| 肥城市| 交城县| 兴隆县| 彰化市| 剑川县| 利辛县| 恭城| 建瓯市| 阿合奇县| 堆龙德庆县|