c語言求素數,c語言求素數的演算法

時間 2023-01-29 08:20:05

1樓:匿名使用者

【例】判斷m是否素數。

n-s流程圖:

#include

main()

【例】求100至200間的全部素數。

#include

main()

if(n%5==0)printf(「」

}printf(「」

2樓:匿名使用者

我只說思路,就不寫**了,太麻煩。偷懶……

定義乙個變數i,從2開始,到你要求的範圍最大數比如說100為止,定義另乙個變數,j,從2開始,到i為止。for迴圈,i>2,i<100,i++,printf"是素數";return 0這樣就好了。

c語言求素數的演算法

3樓:冰封月

根據素數的性質,**設計如下:

設計一:判斷n是否能被1~n-1整除,不能整除為素數#include

int main()

int i, n;

scanf("%d", n);

for (i = 2; i < n ; i++)if (n%i ==0)

break;

if (i < n) printf("this is not a prime.")

else printf("this is a prime.")

return 0;

設計二:判斷n是否能被2~√n間的整數整除,不能整除為素數#include

#include

int main()

int n,i;

double k;

scanf("%d", n);

k = sqrt(n);

for (i = 2; i <=k;i++)if (n%i ==0) break;

if (i <=k) printf("this is not a prime.")

else printf("this is a prime");

return 0;

4樓:匿名使用者

迴圈巢狀,外層迴圈是從1-1000的數字i(1排除,這你應該明白),內層是對數字i的素數判斷。

素數:除了1和它本身外沒有別的因子。也可以理解為:除了1和它本身,其他數來除它餘數都不是0。

所以內層迴圈用從2開始到i的平方根(取整)依次求餘,因為到了平方根以後,再增加除數,得到的商是小於平方根的,等於以前取過的除數。所以平方根以後不用再算了。

如果有=0的餘數(if(i%j ==0)),說明正在判斷的數字不是素數,用break語句退出內層迴圈;如果沒有=0的餘數,開關數w不歸零,if(w)後的語句執行,計數器n自加一次(找到乙個素數),並列印當前檢驗數i。

列印前有乙個if判斷,如果計數器n滿整10(能夠被10整除)就換行,也就是說這個素數表每行10個數。不換行數字鍵隔乙個列表間隔(等於tab)。

另外,團idc網上有許多產品**,便宜有口碑。

c語言求素數**

5樓:匿名使用者

第乙個,初學者的常見錯誤。

相等 是 兩個==,乙個 = 是賦值 if 後面應該是 2個=第二,已經找到乙個因子,判斷 其不是 素數 後,程式應該結束見程式不用迴圈,用 if 和 goto

求"求素數的c語言程式"

6樓:我是果瘋

#include

int main()

}if(a==0)else

return 0;

擴充套件資料zhi:質數又稱素數。一。

dao個大於1的自然。

回數,除了1和它自身外答,不能被其他自然數整除的數叫做質數;否則稱為合數。

基本演算法:若 k%m==0 則說明 k 不是素數。

判斷整數n是否為素數——採用列舉法求解。

採用列舉演算法解題的基本思路:

(1)確定列舉物件、列舉範圍和判定條件;

(2)列舉可能的解,驗證是否是問題的解。

列舉演算法的一般結構:while迴圈。

7樓:朋友想念你

// 素數,也叫質數,就是指除了1和該數本身以外,不能被其他任何整數整除的正專數。

#include

#include

void main()}

請放心使用,有屬問題的話請追問。

你的採納將是我繼續努力幫助他人的最強動力!

8樓:戎蓓謇元魁

n%i可以理解成判斷n是否有約數(除了1和本身外),若i不整除n,即n%i餘數不等於0,則n是素數。

9樓:雲冷宰迎南

因為n%2是取餘數的過程。。若乙個數是素數那麼它與不大於它的任何數取餘都。

專等於它自己。。這也屬就規定了i的最大值是它自己。。那麼迴圈到最後出來的是i==n。。若不是素數則n%i的餘數是變小的。。此時跳出迴圈的時候i是不等於n的。。。

10樓:囧神黃昏

c語言-尋找素數。

附**:#include

#include

int main()/原理:設ab=c,a號c。若設a恆小於根號c,則只需判專斷a是否為因屬數。

}if (m==0)

}printf("大於等於%d,小於等於%d的素數的個數為:%d", a, b, n);

printf("它們的和為:%d", sum);

return 0;}

11樓:那舒郝婷玉

寫一段程式之前,你首先要知道你要幹什麼。

「按我這種思路」:你的思路是什麼,你想要完成乙個什麼功能?想要獲取0~sum間所有的素數;還是最大的素數;還是列印0~sum間所有的數,並描述這個數是素數還是非素數。

只有描述清楚了,大家才好幫你啊。

12樓:你妹

最初的隨緣看書前提也就是。

13樓:匿名使用者

基本思路是判斷數n與for迴圈變數i向除是否等於0,i從2到n-1,等於0表示不是素數。

14樓:不會

2不是素數麼?能輸出2麼?

求素數的c語言程式!

15樓:我是小星星欣欣

素數,也叫質數,就是指除了1和該數本身以外,不能被其他任何整數整除的正數。

#include#includevoid main(){int m, k, i, n=0; for(m=1; m <=200; m=m+2) {k = sqrt(m); for(i=2; i <=k; i++)if(m % i ==0) break; if(i >=k + 1) {printf("%5d",m); n = n + 1;

素數

所謂素數是指除了1和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被2~16的任一整數整除。因此判斷乙個整數m是否是素數,只需把m被2~m-1之間的每乙個整數去除,如果都不能被整除,那麼m就是乙個素數。

另外判斷方法還可以簡化。m不必唄2~m-1之間的每乙個整數去除,只需被2~√m之間的每乙個整數去除就可以了。如果m不能被2~√m間任一整數整除,m必定是素數。

例如判別17是是否為素數,只需使17被2~4之間的每乙個整數去除,由於都不能整除,可以判定17是素數。(原因:因為如果m能被2~m-1之間任一整數整除,其二個因子必定有乙個小於或等於√m,另乙個大於或等於√m。

例如16能被2,4,8整除,16=2*8,2小於4,8大於4,16=4*4,4=√16,因此只需判定在2~4之間有無因子即可)

16樓:囧神黃昏

c語言-尋找素來。

數附**:#include

#include

int main()/原理:設。

源ab=c,a,則有a《根號c斷a是否為因數}if (m==0)

}printf("大於等於%d,小於等於%d的素數的個數為:%d", a, b, n);

printf("它們的和為:%d", sum);

return 0;}

17樓:

只能按照定義去遍歷。

main()

if(judge==1)

printf("%d ",i);}

18樓:犁半梅滕馳

#include

#include

intf(int

n)//起到判斷大於1的正整數是否為素數的作用,返回乙個值以標識,是則返回1,否則。

內返回。printf("總共%d個。",k);return0;}

19樓:砍侃看

#include "iostream"

using namespace std;

bool isprimenum(int x)//該函式用來判斷乙個數是否是素數。

}if(n==2)

return 0;

}int main()

for(;n<=m;n++)

改成c版,標頭檔案沒加:

bool isprimenum(int x)//該函式用來判斷乙個數是否是素數。

}if(n==2)

return 0;

}int main()

for(;n<=m;n++)

}int p;

scanf("%d",p);

return 0;}

c語言求100以內素數的問題

20樓:搜虎哈哈

c語言求100以內的素數程式設計的思路和方法如下:

1.首先需要定義兩個整型的游標變數,用於後續的迴圈操作。這裡定義兩個變數為i,j。

2.接著適用for迴圈來分別計算100以內的數。其中游標適用i變數。(因為第乙個素數是3,所以迴圈變數游標從數字3開始)

3.接著在第乙個for迴圈的開頭新增布林變數tag,這個用於後續判斷乙個數是否為素數。當為素數時,將tag置為false。

4.然後使用第二個for迴圈,在這個迴圈中,使用變數j作為迴圈游標,通過嘗試2到比需要比較的數之前的所有數是否為i的因子。

5.在第二哥迴圈中,當檢測到i不為素數時,將tag置為false。

6.然後判斷tag是否為true,如果是則說明該數為素數,此時輸出該數。

7.編寫**完成後,執行程式即可成功輸出100以內的所有素數。

21樓:西子不淼

程式分析:判斷素數的方法:用乙個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。

程式**:#include

#include ""

main()

if(leap)}}

資料拓展:質數又稱素數。乙個大於1的自然數,除了1和它自身外,不能整除其他自然數的數叫做質數;否則稱為合數。

22樓:1024程式設計師

c語言經典例子之求100之內的素數。

23樓:a羅網天下

錯誤的地方:第二個for迴圈不能用t控制,因為t是flag再控制迴圈無法執行下去

例子如下:程式執行結果如下圖所示:

24樓:匿名使用者

這個程式是死迴圈,還是列印出來的?都是偶數,為什麼i%t能除斷,就要把t=0,如果能除斷,只能說明i不是素數。

25樓:匿名使用者

第二個for迴圈不能用t控制,因為t是flag再控制迴圈無法執行下去#include

void main()}

26樓:匿名使用者

你的寫法存在多處問題,首先你對流程控制不清楚,其次是演算法出現問題#include

void main()

//這裡出現死迴圈,應該用break函式及時跳出迴圈if(t==1)printf("%d",i);當i等於一時t為素數 }}

執行看看。

27樓:欒翠綠

思路不對,素數是能被1和本身整除的,你的程式排除了1但沒排除被本身整除,而且寫法也多處錯誤!

下面程式可以直接執行:

#include

#include

main()

for(j=2;j<101;j++)if(a[j]!=0)

printf("%d",a[j]);

用c語言求素數

我不知道如果m是素數的話算不算是第乙個,我這邊算是第乙個的 如果有疑問可以再提問的哦 include stdio.h int isprime int n int main int argc,char const ar if j n printf 數 d的第 d的素數是 d!n m,n,i retur...

求100 200間的素數,C語言

1.注意 if i k 1 不在 for i 2 i k i 迴圈中,for i 2 i k i if m i 0 break if i k 1 當 for i 2 i k i 沒有被 break 打斷退出,那麼 i 在退出迴圈的值為 k 1 此時 if i k 1 為真,其實 if i k 1 就...

新手求教 c語言素數判斷演算法,用C語言如何判斷素數?

就是判斷從2開始到乙個數的平方根中若不能被他整除,那麼該數就是素數 網上 是若能整除則跳出,所有條件不能整除則輸出是素數。他是只需要一種判斷,不滿足則跳出,那麼跳出後i n,所以可以用。你的 思路沒有錯,只不過網上沒有使用的優化的演算法,如果你想弄明白怎麼優化,那你需要在數學中找答案 獅子 網上的 ...