国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C語言 - 判斷素?cái)?shù)

這篇具有很好參考價(jià)值的文章主要介紹了C語言 - 判斷素?cái)?shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

定義:

素?cái)?shù)(Prime number,又稱質(zhì)數(shù)),指在大于1的自然數(shù)中,除了1和該數(shù)自身外,無法被其他自然數(shù)整除的數(shù)

思路一:試除法

1.如果數(shù)字 i 能被 2 ~ i-1 整除,說明 i 就是素?cái)?shù)

代碼(V1):

#include<stdio.h>
int main()
{
	int i = 0;
	//統(tǒng)計(jì)素?cái)?shù)個數(shù)
	int count = 0;
	for (i = 100; i <= 200; i++)
	{
		//flag為1表示是素?cái)?shù)
		int flag = 1;
		int j = 0;
		//產(chǎn)生2~i-1的整數(shù)
		for (j = 2; j < i; j++)
		{
			if (i % j == 0)
			{
				flag = 0;
			}
		}
		if (flag == 1)
		{
			printf("%d ", i);
			count++;
		}
	}
	printf("\ncount=%d\n", count);
	return 0;
}

2.上述代碼可進(jìn)行優(yōu)化,我們試除的范圍是2 ~ i-1,但實(shí)際上從 i/2 ~ i-1之間的數(shù)是多余的,因?yàn)槿绻粋€數(shù)不能被3整除,那么它一定不能被6整除,優(yōu)化后的范圍為[i/2,i-1],工作量減小一半

代碼(V2):

include<stdio.h>
int main()
{
	int i = 0;
	//統(tǒng)計(jì)素?cái)?shù)個數(shù)
	int count = 0;
	for (i = 100; i <= 200; i++)
	{
		//flag為1表示是素?cái)?shù)
		int flag = 1;
		int j = 0;
		//產(chǎn)生2~i/2的整數(shù)
		for (j = 2; j <= i/2; j++)
		{
			if (i % j == 0)
			{
				flag = 0;
			}
		}
		if (flag == 1)
		{
			printf("%d ", i);
			count++;
		}
	}
	printf("\ncount=%d\n", count);
	return 0;
}

3.繼續(xù)進(jìn)行優(yōu)化,如果數(shù)字 i 可以寫成 i = a × b,那么說明a和中至少有一個數(shù)字是<= 開平方 i 的,若能在 2 ~ 開平方i 之間有一個數(shù)能整除i,那么說明后面也有一個數(shù)能整除i,否則就說明后面也不可能有一個數(shù)能整除i

代碼(V3):

#include<stdio.h>
#include<math.h>
int main()
{
	int i = 0;
	//統(tǒng)計(jì)素?cái)?shù)個數(shù)
	int count = 0;
	for (i = 100; i <= 200; i++)
	{
		//flag為1表示是素?cái)?shù)
		int flag = 1;
		int j = 0;
		//產(chǎn)生2~開平方i的整數(shù)
		for (j = 2; j <= sqrt(i); j++)
		{
			if (i % j == 0)
			{
				flag = 0;
			}
		}
		if (flag == 1)
		{
			printf("%d ", i);
			count++;
		}
	}
	printf("\ncount=%d\n", count);
	return 0;
}

4.在上述優(yōu)化基礎(chǔ)上,我們知道偶數(shù)不可能是素?cái)?shù),因此還可以優(yōu)化

代碼(V4):

#include<stdio.h>
#include<math.h>
int main()
{
	int i = 0;
	//統(tǒng)計(jì)素?cái)?shù)個數(shù)
	int count = 0;
	//只統(tǒng)計(jì)范圍內(nèi)奇數(shù)中素?cái)?shù)個數(shù)
	for (i = 101; i <= 200; i+=2)
	{
		//flag為1表示是素?cái)?shù)
		int flag = 1;
		int j = 0;
		//產(chǎn)生2~開平方i的整數(shù)
		for (j = 2; j <= sqrt(i); j++)
		{
			if (i % j == 0)
			{
				flag = 0;
			}
		}
		if (flag == 1)
		{
			printf("%d ", i);
			count++;
		}
	}
	printf("\ncount=%d\n", count);
	return 0;
}

運(yùn)行結(jié)果:

C語言 - 判斷素?cái)?shù)

?文章來源地址http://www.zghlxwxcb.cn/news/detail-511577.html

思路二:篩法

最小的素?cái)?shù)是2,我們先去除所有能被2整除的數(shù),此時(shí)素?cái)?shù)是3,去掉所有能被3整除的數(shù),以此類推,如思路一v3所述,只需要在數(shù)組元素的值小于等于所求的最大范圍i的開平方時(shí)進(jìn)行此操作即可,去掉所有小于等于開平方i的所有數(shù)的倍數(shù),剩下的數(shù)就是素?cái)?shù)

C語言 - 判斷素?cái)?shù)

?代碼:

#include<stdio.h>
#include<math.h>
int main()
{
	int i = 0;
	int arr[200] = { 0 };
	//統(tǒng)計(jì)素?cái)?shù)個數(shù)
	int count = 0;
	//將2~200的數(shù)放入數(shù)組中
	for (i = 0; i < 200; i++)
	{
		arr[i] = i + 2;
	}
	int j = 0;
	//當(dāng)數(shù)組元素小于開平方i才進(jìn)入循環(huán)
	while (arr[j] <= sqrt(200))
	{
		//遍歷數(shù)組元素,數(shù)組首元素為素?cái)?shù)2,下標(biāo)為0,作為除數(shù)
		//那么首個被除數(shù)應(yīng)該從下標(biāo)為1的數(shù)3開始向后遍歷
		for (i = j + 1; i < 200; i++)
		{
			//將能被素?cái)?shù)整除的數(shù)組元素置為0
			if (arr[i] % arr[j] == 0)
			{
				arr[i] = 0;
			}
		}
		j++;
		//此時(shí)被置為0的數(shù)都不是素?cái)?shù),無需判斷
		while (arr[j] == 0)
		{
			j++;
		}
	}
	for (i = 98; i < 200; i++)
	{
		//在上述操作執(zhí)行結(jié)束后,只有尚未被置0的數(shù)才是素?cái)?shù)
		if (arr[i] != 0)
		{
			count++;
			printf("%d ", arr[i]);
		}
	}
	printf("\ncount=%d\n", count);
	return 0;
}

運(yùn)行結(jié)果:

C語言 - 判斷素?cái)?shù)

?

到了這里,關(guān)于C語言 - 判斷素?cái)?shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【C語言】判斷一個數(shù)是否為素?cái)?shù)

    目錄 判斷一個數(shù)是否為素?cái)?shù) 方法1? 方法2? ? 2.1 2.2 進(jìn)階:輸出區(qū)間長度內(nèi)的素?cái)?shù) “ 素?cái)?shù)和質(zhì)數(shù)沒有區(qū)別 ,素?cái)?shù)又叫質(zhì)數(shù),質(zhì)數(shù)是指在大于1的自然數(shù)中,除了1和它本身以外,不能被其他自然數(shù)整除的數(shù)。比1大但不是素?cái)?shù)的數(shù)稱為合數(shù),1和0既非素?cái)?shù)也非合數(shù)。” 所謂素?cái)?shù)

    2024年02月04日
    瀏覽(20)
  • 【C語言】C語言實(shí)現(xiàn)一個函數(shù) 判斷是否是素?cái)?shù)

    【C語言】C語言實(shí)現(xiàn)一個函數(shù) 判斷是否是素?cái)?shù)

    ? ? ? ?歡迎來到南方有喬木的博客?。?! 博主主頁: 點(diǎn)擊點(diǎn)擊!戳一戳??! 博主QQ: 1636758318 博主簡介: 一名在校大學(xué)生,正在努力學(xué)習(xí)Java語言編程。 窮且意堅(jiān),不墜青云之志 ,希望能在編程的世界里找到屬于自己的光。 跪謝帥氣or美麗的朋友們能夠幫我點(diǎn)贊! 請對文中

    2024年02月04日
    瀏覽(20)
  • C語言素?cái)?shù)(質(zhì)數(shù))判斷的三種方法

    本文介紹了判斷素?cái)?shù)的3種方法,從素?cái)?shù)的概念分析,確定找到素?cái)?shù)的幾個必要條件,設(shè)計(jì)思路,并將代碼進(jìn)行優(yōu)化。此外,還使用自定義函數(shù)的形式將同樣的思路進(jìn)行實(shí)現(xiàn)。 素?cái)?shù),就是僅能被自身和1整除的數(shù)字。 首先我們可以提取出判斷素?cái)?shù)的三個基本條件: 素?cái)?shù)是整數(shù)

    2024年02月04日
    瀏覽(18)
  • C語言中判斷素?cái)?shù)的幾種方法

    C語言中判斷素?cái)?shù)的幾種方法

    作為C的初學(xué)者們希望大家看看這幾種判斷素?cái)?shù)的方法 既然進(jìn)來了就看完把 題目要求: 判斷n是否為素?cái)?shù)。 首先我們講一下素?cái)?shù)的判定:素?cái)?shù)就是只能被1或者本身整除的數(shù),這就延伸出了幾種不同的判定方法。 方法一:因?yàn)榕袛嗨財(cái)?shù)相當(dāng)于就是判斷這個數(shù)能不能整除2-這個數(shù)

    2024年02月11日
    瀏覽(16)
  • C語言--輸入一個數(shù)判斷是否為素?cái)?shù)(多種方法)

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

    ?需要解決這個問題,首先我們要明白 --------什么是素?cái)?shù)? (質(zhì)數(shù))素?cái)?shù)是指在大于1的自然數(shù)中,除了1和它本身以外不再有其他因數(shù)的自然數(shù)。 舉個例子:4? 可以 由2*2=4? 和1*4 得到,不符合素?cái)?shù)的條件,所以不是素?cái)?shù)。 ? ? ? ? ? ? ? ? ??5? 只能由1*5 得到,符合素?cái)?shù)的

    2024年01月25日
    瀏覽(20)
  • 超級詳細(xì)用C語言判斷一個數(shù)是否是素?cái)?shù)

    先上代碼: #include stdio.h int main() {?? ? ?? ?int n,i; ?? ?printf(\\\"請輸入一個數(shù): \\\"); ?? ?scanf(\\\"%d\\\",n); ?? ?for(i=2;in;i++){ ?? ??? ?if(n%i==0){ ?? ??? ??? ?break; ?? ??? ?} ?? ?} ?? ?if(n==i){ ?? ??? ?printf(\\\"是素?cái)?shù)\\\"); ?? ?} ?? ?else ?? ??? ?printf(\\\"不是素?cái)?shù)\\\"); } 理解: 素?cái)?shù)

    2024年02月08日
    瀏覽(19)
  • C語言:判斷一個數(shù)是否為素?cái)?shù)(3種方法,含注釋)

    首先要先明白素?cái)?shù)的定義:除了1和本身之外,沒有其他的因數(shù)的數(shù),即不能被其他數(shù)整除。 同時(shí)要注意,1不是素?cái)?shù)。 以下為判斷素?cái)?shù)的3個代碼: 1.要注意給m賦初值是不能為1,因?yàn)?是任何數(shù)的因數(shù),可以被任何數(shù)整除。若初值為1,則第一步就結(jié)束循環(huán),所有的數(shù)輸出結(jié)果

    2024年02月13日
    瀏覽(23)
  • C語言--編寫函數(shù)判斷一個數(shù)是否為素?cái)?shù),在主函數(shù)中調(diào)用該函數(shù)輸出100以內(nèi)的全部素?cái)?shù)。
  • C語言判斷一個數(shù)是否為素?cái)?shù)的三種方法(詳細(xì))

    ? ? ? ???今天我們來使用C語言來實(shí)現(xiàn)判斷一個數(shù)是否為素?cái)?shù),首先我們需要了解到素?cái)?shù)的概念,素?cái)?shù)就是只能被1和它本身整除的數(shù)。 ??? ? ? ? ? 這是第一種代碼,我們來分析一下,首先創(chuàng)建變量i和n,這里我們i用于循環(huán),n用來存放我們輸入的數(shù)字。之后我們設(shè)置一個

    2024年04月25日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包