1樓:匿名使用者
for(j=2;jif(i%j!=0)
a[n++]i;
這個地方有問題。
比如i=9j=2時。
i%j!=0就真了,就當成了素數。
改法可以多拿攜加個判斷標誌變數慧銀c,j=2到i-1後看有沒有整除過就好前敏宴了。
void fun(int m,int *k,int a)int i,j,t,n=0,c;
for(c=1,i=2;ifor(j=2;jif(i%j==0)
c=0;if(c==1)
a[n++]i;
k=n;
如何用數學方法判斷素數
2樓:華源網路
方法。一、用試除法判斷乙個自然數。
a是不是素數。
時,用各個素數從小到大依次去除a,如果到某乙個素數正好整除,這個a就可以斷定不是素數;如果不能整除,當不完全商又小於這個素數時,就不必再繼續試除,可以斷定a必然是素數.
方法。二、只要找出x為乙個奇數和乙個偶數平方差。
的形式(這閉旅是一定的)便可以a2-b2=(a+b)(a-b)便是兩個因數。
例如26341,先找出比26341大的乙個偶平方數。
26896,與它的差是555,肯定不是平方數,再下一飢寬個平方數(其實考慮到(x+1)^2=x2+2x+1,因此直接將原數加上2x+1就行了,用不著算x+1的平方),27556, 差1215,也不是,然後28224個位與1的差為3,直接排除,下乙個2559也不是(一看就知道它等於50^2+59).再下個差為3直接排出,再下個、再再下個……找出規律來就很快了,最後爛態亮221^2=48841,48841-26341=22500,很明顯22500=150^2,就分解出來了26341=71×371
怎樣求素數的判斷
3樓:x狄仁傑
一、查《素數表》,看已知數是否為素數;弊明洞。
二、計算租枯已知數a的平方根√a,分別用不超過√a的各個素數槐哪去試除a,如果所有不大於√a的素數都不能整除a,則a為素數;否則為合數。
例如,判斷1867是否是素數,先算√1867≈,然後分別計算1867除以等素數,都除不盡,則1867為素數。當然,1867不能被整除是很容易判定的。
4樓:網友
質數又稱素數。指在乙個大於1的自然數中,除了1和此整數自身外,沒法被其他培逗自然數整除的數。如13,只能被1和13整除。
所以要判斷a是否是素數,只要判斷a能否被2到a-1之間的數整除,如果能則說明a能被1和a之外的數整除,即a不是素數;如果不能則說明a只能被1和a整除,即a是素數。
但是這樣的判斷方法做了很多無用功,假設b能整除a,c為商(即配指賣a=b*c)。則b和c的大少關係有兩種:一種b,c中一大一小(又a=√a*√a,所以b,c中乙個大於√a乙個數小於√a),另一種b=c(此時,√a=b=c)。
故如果a能被大於√a的數整除則一定存在乙個小於√a的數能整除a。所以只要判斷2到√a的整數是否能整除a就行了。
例如逗拿求1000以內的素數:
#include
#include
void main()
int i,a,b;
for(a=2;a<=1000;a++)
b=sqrt(a);/求a的平方根。
for(i=2;i<=b;i++)
if(a%i==0)
break;
if(i>b)//如果i>sqrt(a)則說明2到sqrt(a)之間沒有數可以整除a,故a為素數。
printf("%4d",a);
如何用C 寫關於判斷數是否為素數的程式
include iostream include math h usingnamespacestd boolisprime intnumber for int i 2 i i number i if number i 0 return false return true void printnum ...
如何用vb編寫程式判斷數是完全平方數
思路 1 判斷值是否copy大於等於0 2 開平方這個數 3 判斷開平方後取整和開平方後的數是否相等,如果相等是完全平方數,否則不是 例子 dim a,b for a 1 to 100 if a 0 then b sqr a if int b b then 完全平方數 else 不是完全平方數 en...
如何用函式顯示C列內容,如何用函式顯示C列內容
在第一個格子輸入以下 substitute b1,a1,就可以刪除a列的資料 然後你的輸出順序,需要研究一下細節 如果只是判斷 a列與c列的值是否相同 可以使用if函式 r n也可配合 條件格式 進行資料突顯 r n至於你說的 對齊 我就不明白了.先將這些數放到一個二維陣列裡,用一個迴圈,控制列不變...