最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言輸入一個(gè)數(shù)判斷是否為素?cái)?shù)的多種方法

 更新時(shí)間:2023年04月23日 10:11:25   作者:洋-----  
素?cái)?shù)是只能被1和它自己本身整除,不能被其他自然數(shù)整除的大于1的正整數(shù),下面這篇文章主要給大家介紹了關(guān)于C語言輸入一個(gè)數(shù)判斷是否為素?cái)?shù)的多種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

 需要解決這個(gè)問題,首先我們要明白-------->什么是素?cái)?shù)?

(質(zhì)數(shù))素?cái)?shù)是指在大于1的自然數(shù)中,除了1和它本身以外不再有其他因數(shù)的自然數(shù)。

舉個(gè)例子:4  可以 由2*2=4  和1*4 得到,不符合素?cái)?shù)的條件,所以不是素?cái)?shù)。

                  5  只能由1*5 得到,符合素?cái)?shù)的條件,所以是素?cái)?shù)。

好了現(xiàn)在,我們了解了素?cái)?shù)的概念,我們就把它轉(zhuǎn)化成代碼的思想,進(jìn)行我們的操作了。

1.  第一種方法

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

好了接下來我們用代碼實(shí)現(xiàn)

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

 代碼的具體實(shí)現(xiàn)就在上面,可能有的同學(xué)對if語句中為什么當(dāng)j==i時(shí),就輸出是素?cái)?shù)。

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

2.第二種方法

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

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

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

好了接下來我們用代碼實(shí)現(xiàn)

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

 大家覺得還能對代碼思想進(jìn)行優(yōu)化嗎?????

答案是肯定的!

3.第三種方法

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

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

好了接下來我們用代碼實(shí)現(xiàn)

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

 因?yàn)橛玫搅藬?shù)學(xué)中開平方的函數(shù),所以引用了多一個(gè)庫,這個(gè)不做過多講解,大家自行去了解。

當(dāng)然判斷素?cái)?shù)不知有上述的方法,還可以通過函數(shù)進(jìn)行實(shí)現(xiàn)。

4.第四種方法(函數(shù)實(shí)現(xiàn))

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

好了接下來我們用代碼實(shí)現(xiàn)

#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("輸入一個(gè)數(shù)"); 
	scanf("%d",&j);
	  if(judge(j)==1)
	  printf("%d 是素?cái)?shù)",j);
	else
	printf("%d 不是素?cái)?shù)",j);
	return 0;	
}

 這種思想和第一種一樣,所以也可以像第二,三種那樣對代碼進(jìn)行優(yōu)化,這里就不過多講解了(累了累了嘞????)

遇到的問題:我思考了好久,在糾結(jié)當(dāng)輸入1的時(shí)候的這種情況應(yīng)該怎么去調(diào)整代碼,大家能看到我每塊代碼都用了If語句對是不是1進(jìn)行了判斷,(能力有限????)所以我能想到的方法就是通過 if 語句對輸入的1進(jìn)行判斷,如果不用這個(gè)if語句,那輸入1 的時(shí)候結(jié)果可能就有問題,但我覺得這樣會不會太麻煩了,但我又想不出來怎么去調(diào)整。

總結(jié)

到此這篇關(guān)于C語言輸入一個(gè)數(shù)判斷是否為素?cái)?shù)的多種方法的文章就介紹到這了,更多相關(guān)C語言判斷是否為素?cái)?shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c++?qt自定義搜索編輯框的實(shí)現(xiàn)方法

    c++?qt自定義搜索編輯框的實(shí)現(xiàn)方法

    這篇文章主要介紹了c++?qt自定義搜索編輯框,通過自定義QLineEdit,在編輯框里添加布局,將按鈕設(shè)置在右邊,當(dāng)點(diǎn)擊按鈕搜索按鈕時(shí)發(fā)送信號到主界面做相應(yīng)的操作,需要的朋友可以參考下
    2022-03-03
  • C++自動生成迷宮游戲

    C++自動生成迷宮游戲

    這篇文章主要為大家詳細(xì)介紹了C++自動生成迷宮游戲,運(yùn)用并查集自動生成迷宮地圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 基于ios中的流狀態(tài)的定義分析

    基于ios中的流狀態(tài)的定義分析

    本篇文章介紹了,基于ios中的流狀態(tài)的定義分析。需要的朋友參考下
    2013-05-05
  • C語言 makefile學(xué)習(xí)及實(shí)現(xiàn)實(shí)例

    C語言 makefile學(xué)習(xí)及實(shí)現(xiàn)實(shí)例

    這篇文章主要介紹了C語言 makefile學(xué)習(xí)及實(shí)現(xiàn)實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • C++數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)鄰接表

    C++數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)鄰接表

    這篇文章主要為大家詳細(xì)介紹了C++數(shù)據(jù)結(jié)構(gòu)之實(shí)現(xiàn)鄰接表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C語言實(shí)現(xiàn)掃雷小項(xiàng)目

    C語言實(shí)現(xiàn)掃雷小項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)掃雷小項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C++實(shí)現(xiàn)截圖截屏的示例代碼

    C++實(shí)現(xiàn)截圖截屏的示例代碼

    本文主要介紹了C++實(shí)現(xiàn)截圖截屏的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 詳解C++11 原始字符串字面量(Json字符串表達(dá)更方便)

    詳解C++11 原始字符串字面量(Json字符串表達(dá)更方便)

    原始字符串字面量(Raw String Literal)是C++11引入的一種字符串表示方式,用于簡化字符串的定義,特別是當(dāng)字符串中包含大量特殊字符(如換行符、雙引號等)時(shí),這篇文章給大家介紹C++11原始字符串字面量(Json字符串表達(dá)更方便)的相關(guān)知識,感興趣的朋友一起看看吧
    2025-03-03
  • C語言 位段的詳細(xì)介紹

    C語言 位段的詳細(xì)介紹

    這篇文章主要介紹了C語言 位段的詳細(xì)介紹的相關(guān)資料,學(xué)習(xí)C語言基礎(chǔ)的朋友,可以參考本文,需要的朋友可以參考下
    2016-11-11
  • C++中十種內(nèi)部排序算法的比較分析

    C++中十種內(nèi)部排序算法的比較分析

    本文給大家分享的是個(gè)人寫的一段對C++中十種內(nèi)部排序算法的比較分析的代碼,主要在于測試10種排序方法的性能,給大家參考下吧。
    2015-03-03

最新評論

武功县| 民勤县| 牙克石市| 桂东县| 黄平县| 连南| 霍州市| 镶黄旗| 桃园市| 弥渡县| 崇义县| 遵化市| 隆昌县| 扎赉特旗| 舟曲县| 从化市| 博兴县| 仁布县| 河南省| 安西县| 安福县| 凉山| 阳春市| 长阳| 工布江达县| 正宁县| 潞城市| 义马市| 海口市| 芒康县| 康平县| 林口县| 平和县| 东平县| 恩平市| 广汉市| 绥德县| 澎湖县| 灵武市| 黄大仙区| 库尔勒市|