素?cái)?shù)又稱質(zhì)數(shù),所謂素?cái)?shù)是指除了 1 和它本身以外,不能被任何整數(shù)整除的數(shù),例如17就是素?cái)?shù),因?yàn)樗荒鼙?2~16 的任一整數(shù)整除。
10余年的富民網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)整合營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整富民建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“富民網(wǎng)站設(shè)計(jì)”,“富民網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
思路1、判斷一個(gè)整數(shù)m是否是素?cái)?shù),只需把 m 被 2 ~ m-1 之間的每一個(gè)整數(shù)去除,如果都不能被整除,那么 m 就是一個(gè)素?cái)?shù)。
思路2、判斷方法還可以簡(jiǎn)化。
m 不必被2~m-1之間的每一個(gè)整數(shù)去除,只需被2~√m之間的每一個(gè)整數(shù)去除就可以了。如果 m 不能被2~√m?間任一整數(shù)整除,m必定是素?cái)?shù)。例如判別17是是否為素?cái)?shù),只需使17被2~4之間的每一個(gè)整數(shù)去除,由于都不能整除,可以判定17是素?cái)?shù)。
原因:因?yàn)槿绻鹠能被2~m-1之間任一整數(shù)整除,其二個(gè)因子必定有一個(gè)小于或等于√m,另一個(gè)大于或等于√m。
例如16能被2、4、8整除,16=2*8,2小于 4,8大于4,16=4*4,4=√16,因此只需判定在2~4之間有無(wú)因子即可。
兩種思路的代碼請(qǐng)看解析。
拓展資料:
素?cái)?shù)(prime number)又稱質(zhì)數(shù),有無(wú)限個(gè)。素?cái)?shù)定義為在大于1的自然數(shù)中,除了1和它本身以外不再有其他因數(shù)。
C語(yǔ)言是一門(mén)面向過(guò)程、抽象化的通用程序設(shè)計(jì)語(yǔ)言,廣泛應(yīng)用于底層開(kāi)發(fā)。C語(yǔ)言能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器。C語(yǔ)言是僅產(chǎn)生少量的機(jī)器語(yǔ)言以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的高效率程序設(shè)計(jì)語(yǔ)言。
參考資料:
百度百科——素?cái)?shù)
百度百科——C語(yǔ)言
C語(yǔ)言-尋找素?cái)?shù)
附代碼:
#includestdio.h
#includemath.h
int main()//原理:設(shè)ab=c,ab,則有a根號(hào)cb。若設(shè)a恒小于根號(hào)c,則只需判斷a是否為因數(shù)
{
int a, b;
printf("請(qǐng)按從小到大輸入兩個(gè)素?cái)?shù):");
scanf_s("%d %d", a, b);
int n = 0,m=0,sum = 0;
double i, j;//i是從a到b的待篩選數(shù),j是從2到根號(hào)i的除數(shù),要判斷j是否為i的因數(shù)
for (i = a; i = b; i++)
{
m = 0;
int c = int(pow(i, 0.5));
for (j = 2; j = c; j++)
{
if ((i / j - int(i / j)) == 0.0)
{
m++;//m是i被從2到根號(hào)i的j除了之后,商為整數(shù),即發(fā)現(xiàn)j是i的因數(shù)的次數(shù)
}
}
if (m==0)
{
printf("找到素?cái)?shù):%d\n", int(i));
n++;
sum = sum + i;
}
}
printf("大于等于%d,小于等于%d的素?cái)?shù)的個(gè)數(shù)為:%d\n", a, b, n);
printf("它們的和為:%d", sum);
return 0;
}
你的C語(yǔ)言求素?cái)?shù)的程序我?guī)湍愀耐炅?僅兩處錯(cuò)誤),你看看吧(改動(dòng)的地方見(jiàn)注釋)
#includestdio.h
#includemath.h
int?main()
{
int?n,i=1;
int?r;//這里float?r;改成int?r;因?yàn)檎麛?shù)除以整數(shù)所得余數(shù)還是整數(shù)
printf("input?a?number?n=");
scanf("%d",n);
for(i=2;i=n-1;)
{
r=n%i;
if(r==0)
{
printf("%d不是素?cái)?shù)\n",n);
return?0;
}
else
{
i=i+1;
if(isqrt(n))
{
printf("%d是素?cái)?shù)\n",n);
return?0;
}
//else//這里去掉else語(yǔ)句塊,因?yàn)槿绻鹖sqrt(n)n就是素?cái)?shù),如果isqrt(n)應(yīng)該讓程序自動(dòng)執(zhí)行下去
//{
//return(n);
//}
}
}
}
#include?stdio.h
#include?math.h
//判斷是否為素?cái)?shù)的函數(shù)
int?isPrime(int?n)
{
int?i=2;
while(i=(int)sqrt(n))
{
if(n%i?==?0)
return?0;??//不是素?cái)?shù),直接返回0
else
i++;
}
return?1;
}
int?main()
{
int?n,i;
printf("輸入一個(gè)正整數(shù):?");
scanf("%d",n);
for(i=2;i=n;i++)
{
if(isPrime(i))??//調(diào)用函數(shù),如果該數(shù)為素?cái)?shù),則輸出
printf("%d?",i);
}
printf("\n");
return?0;
}
示例運(yùn)行結(jié)果:
輸入一個(gè)正整數(shù): 50
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
#include stdio.h
int main()
{
int a=0;
int num=0;
int i;
printf("輸入一個(gè)整數(shù):");
scanf("%d",num);
for(i=2;inum;i++){
? if(num%i==0){
? ? ? a++;
? }
}
if(a==0){
? printf("%d是素?cái)?shù)。\n", num);
}else{
? printf("%d不是素?cái)?shù)。\n", num);
}
return 0;
}
擴(kuò)展資料:
質(zhì)數(shù)又稱素?cái)?shù)。一個(gè)大于1的自然數(shù),除了1和它自身外,不能被其他自然數(shù)整除的數(shù)叫做質(zhì)數(shù);否則稱為合數(shù)。
基本算法:若 k%m==0 則說(shuō)明 k 不是素?cái)?shù)。
判斷整數(shù)n是否為素?cái)?shù)——采用枚舉法求解。
采用枚舉算法解題的基本思路:
(1)確定枚舉對(duì)象、枚舉范圍和判定條件;
(2)枚舉可能的解,驗(yàn)證是否是問(wèn)題的解。
枚舉算法的一般結(jié)構(gòu):while循環(huán)。
參考資料來(lái)源:百度百科-枚舉法
思路:所謂素?cái)?shù)是指只能被1和自身整除的數(shù)叫作素?cái)?shù),判斷素?cái)?shù)就可以從2到該數(shù)減一依次判斷能否整除該數(shù),如果能則不是素?cái)?shù),否則就是素?cái)?shù)。
參考代碼:
#includestdio.h
int?isp(int?n)//判斷是否是素?cái)?shù),是返回1,否則返回0
{
int?i;
for(i=2;in;i++)
if(n%i==0)?return?0;
return?1;
}
int?main()
{
int?a;
scanf("%d",a);
if(isp(a))
printf("%d是素?cái)?shù)\n",a);
else
printf("%d不是素?cái)?shù)\n",a);
return?0;
}
/*
輸出:?
89
89是素?cái)?shù)
*/