#include?stdio.h

創(chuàng)新互聯(lián)公司是一家專業(yè)提供哈密企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為哈密眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
static?char?m[8000000];
static?int?prime[500000];
#define?MAX_N?7368787
void?set(void)
{
int?i,j;
for(i?=?2;?i=MAX_N;?i++)
{
if(m[i]?==?1)?continue;
for(j=i+i;?j=MAX_N;?j+=i)
m[j]=1;
}
for(i?=?j=0;?i=MAX_N;i++)
if(m[i]==0)?prime[j++]=i;
}
int?main()
{
int?m,n,;
while(~scanf("%d%d",m,n))
{
for(i=m;i=n;i++)
{
printf("%d",prime[i-1]);
if(i==n?||?(i-m)%10==9)?putchar('\n');
else?putchar('?');
}
}
return?0;
}
/判斷是不是素?cái)?shù)
#includestdio.h
int prime(int a);//函數(shù)聲明
int main()
{
int n,i;
scanf("%d",n);
if(prime(n)==1) //return返回值1
printf("prime");
else
printf("not prime") ;
}
int prime(int a)
{
int i;
for(i=2;ia;i++)
if(a%i==0)
return 0;//a%i==0不成立
else
return 1;//a%i==0成立
}
擴(kuò)展資料:
素?cái)?shù)的算法
1、素?cái)?shù):除了1和本身外無法被其他自然數(shù)整除的數(shù),叫做素?cái)?shù),也稱質(zhì)數(shù),如:2,3,5,7一系列。
2、合數(shù):比1大但不是素?cái)?shù)的數(shù)稱為合數(shù),如:8,9,10一系列。
3、特殊的數(shù)字:1和0既不是素?cái)?shù)也不是合數(shù)。
4、算法:? 1確定性算法? ?2隨機(jī)性算法? 3Eratosthenes算法。
#include "stdafx.h"
int main(int argc, char* argv[])
{
int a=0;
int b=2;
int i=0;
int n1=0;
int n2=0;
printf("請輸入所要求哪個(gè)范圍的質(zhì)數(shù)\n");
scanf("%d %d",n1,n2);
for(a=n1;a=n2;a++)
{
for(b=2;b=a-1;b++)
if(a%b==0) break;
if(a=b)
printf("質(zhì)數(shù): %d\n",a);
}
printf("\n");
return 0;
}
3
輸入你所要求某個(gè)范圍的質(zhì)數(shù),兩個(gè)數(shù)用【空格鍵】隔開。如輸入"180 200",
輸出:
質(zhì)數(shù): 181
質(zhì)數(shù): 191
質(zhì)數(shù): 193
質(zhì)數(shù): 197
質(zhì)數(shù): 199
數(shù)學(xué)的概念中,素?cái)?shù)就是只能被1和它本身所整除的整數(shù)。但是有一個(gè)例外,就是1不屬于素?cái)?shù)。所以你在輸入一個(gè)整數(shù)并加以判斷的時(shí)候就需要考慮這種情況了。如下即可:
while(scanf("%lu", num) == 1 num != 1)
這里用到了while循環(huán)來判斷輸入的數(shù)值并加以判斷,如果輸入格式正確的話會返回一個(gè)1并將輸入的數(shù)值存入num這個(gè)變量中,然后再判斷num的值是否為1。
在這里有一條很好用的規(guī)則用于素?cái)?shù)的判斷:測試的數(shù)只需要界于2到num的平方根之間的所有數(shù),看它們是否可以整除num。如果可以整除,說明輸入的數(shù)不是素?cái)?shù);反之,說明輸入的數(shù)是素?cái)?shù)。
到這里,就會有人說平方根怎么求,其實(shí)這個(gè)很好解決。你完全可以像下面這樣描述判斷條件:
for(div = 2; (div * div) = num;div++){ ? ?if(num % div == 0){ ? ? ? ?if((div * div) != num){
? ? ?printf("%lu is divisible by %lu and %lu.\n", num, div, num / div);
?}else {
? ? ?printf("%lu is divisible by %lu.\n", num, div);
?}
}
}
在這里,在if條件語句里面還嵌套了一個(gè)if條件語句,用來判斷兩個(gè)約數(shù)是否是一樣的,比如144,約數(shù)是12和12,這時(shí)候就只需要打印一個(gè)約數(shù)即可。
紅框里的代碼,加上那個(gè)i++的for循環(huán),其邏輯是:
從2開始,遍歷所有小于n的整數(shù),
只要存在一個(gè)整數(shù)可以被n整除(即余數(shù)為0),則可判斷n為合數(shù).
若從2到n-1范圍內(nèi),不存在可整除n的數(shù),則判斷n為質(zhì)數(shù).
還有 for(int .......)這種定義變量的寫法,要C99才支持,現(xiàn)在很多編譯器默認(rèn)C89標(biāo)準(zhǔn),或者不支持C99標(biāo)準(zhǔn),這樣寫容易出錯(cuò).
第一個(gè)for循環(huán)里面,直接把n=0,1,2的情況跳過了.既然這樣,變量n直接把初值賦為3不就好了,賦值0干嘛.
第二個(gè)for循環(huán)里面,判斷到isqrt(n)就可以了,還有更簡單的求質(zhì)數(shù)算法,感興趣可以百度.
這是我以前寫過的判斷質(zhì)數(shù)的程序,希望對你有幫助。
#includestdio.h
int
prime(int
a)
{
int
i;
for(i=2;i=a/2;i++)
{
if(a%i==0)
break;
}
if(ia/2)
return
1;
else
return
0;
}
int
main(void)
{
int
x;
printf("請輸入一個(gè)整數(shù):");
scanf("%d",x);
if(prime(x))
printf("%d為素?cái)?shù)\n",x);
else
printf("%d不是素?cái)?shù)\n",x);
}
主要是加了break
文章名稱:c語言函數(shù)質(zhì)數(shù),C語言求質(zhì)數(shù)的函數(shù)
網(wǎng)站地址:http://chinadenli.net/article9/dseepoh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、品牌網(wǎng)站制作、微信小程序、用戶體驗(yàn)、響應(yīng)式網(wǎng)站、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)