c質數的演算法
① c語言求一個數的質因數
以下為解題思路:
我們要求質因數,那麼就選擇採用遍歷的方法,從2開始除直到該數本身尋找他的因數前提:要確保輸入的整數是合數,不然計算沒有結果。
盡管C語言提供了許多低級處理的功能,但仍然保持著跨平台的特性,以一個標准規格寫出的C語言程序可在包括類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯。
C語言是一門面向過程的計算機編程語言,與C++、C#、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。
C語言描述問題比匯編語言迅速、工作量小、可讀性好、易於調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編語言代碼生成的目標程序效率低10%-20%。因此,C語言可以編寫系統軟體。
當前階段,在編程領域中,C語言的運用非常之多,它兼顧了高級語言和匯編語言的優點,相較於其它編程語言具有較大優勢。計算機系統設計以及應用程序編寫是C語言應用的兩大領域。同時,C語言的普適較強,在許多計算機操作系統中都能夠得到適用,且效率顯著。
② c語言求素數的演算法
根據素數的性質,代碼設計如下:
設計一:判斷n是否能被1~n-1整除,不能整除為素數
#include<stdio.h>
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<stdio.h>
#include<math.h>
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;
}
(2)c質數的演算法擴展閱讀:
1.素數的定義是只能被1和他本身整除,1不是素數.因此要判斷一個數是否為素數.就要判斷它能不能被比他小的所有素數整除,這是一個演算法.(寫到演算法時,我只能寫出用它除以比他小的所有數,造成運算速度低下)
2.如果一個質數大於根號n,而n可以除盡它,那麼n必然也可以除盡一個更小的質數。由此可以得到一個法2較快的素數判斷演算法
③ c語言書上判斷一個數是否為質數並輸出它的最大質因數這個程序看不懂啊,求大神來解釋一下它的演算法和意思
④ C語言程序編程:輸出100到200間的全部素數,每行輸出5個素數。
1、打開VC2010後的界面。
⑤ 這個c程序質數演算法是什麼意思,看不懂。為什麼要 j <= (i/j)呢
判斷條件 j <= (i/j)即j*j<=i,即2~sqrt(i)內判斷是否可整除i,即可判斷i是否是質數,剩下的sqrt(i)+1~i-1沒有必要再判斷,目的無非是少做幾次循環判斷
你寫成j<i也可以,就是多做了若干次無意義的循環判斷而已
⑥ c語言如何判斷素數
素數又稱質數,所謂素數是指除了 1 和它本身以外,不能被任何整數整除的數,例如17就是素數,因為它不能被 2~16 的任一整數整除。判斷一個整數m是否是素數,只需把 m 被 2 ~ m-1 之間的每一個整數去除,如果都不能被整除,那麼 m 就是一個素數。
首先要知道素數是不等於1,它的因子只有1和它本身。判斷一個數是否為素數,可以用大於1小於給定數的所有數去除給定數,如果有任何一個能夠除盡,就表示是合數,反之是素數。
(6)c質數的演算法擴展閱讀:
首先,本文英文字母都表示整數,上半部B 》3N 》W,下半部B 》W 》3N。大於3的素數只有6N-1和6N+1兩種形式,我們只需判定這兩種數是素數還是合數即可。
命題 1 對於B=36N+1 形數而言。
若不定方程(3N)^2+N-(B-1)/36=W^2 有整數解,
則 6(3N-W)+1 是小因子數;6(3N+W)+1 是大因子數。
若不定方程 (3N)^2-N-(B-1)/36=W^2 有整數解,
則 6(3N-W)-1 是小因子數;6(3N+W)-1 是大因子數。
兩式都無解,是素數。