1樓:匿名使用者
1、i大於half當然能夠說明data是素數了。
判斷素數的條件是除了能被1和自身整除之外不能被其它數整除。也就是說只要不能被自身的一半整除就行了。
當 i>half時,data已經不能被小於等於data/2(data的一半)整除了!到這個時候,已經能判斷data為素數了!
2、當i==half時,data都不能被i整除,執行i++,然後判斷 i<=half;當i>half時for語句結束!懂嗎?
其實for語句的主要目的是讓自身終止執行,讓它終止有兩個條件,第一、if(data%i==0) break;也就是它判斷data不是素數,因為「data%i==0」,data能被小於等於它的數整除,當然不是素數了,然後通過「 if(i>half) {xx[n]=data;n++; 」這條語句判斷,當i沒有累加到小於data/2,那麼data不是素數。第二、i<=half ,如果是這樣,那麼data一定是素數了。因為它沒有被data/2的數整除!
2樓:桂綸美
if 不一定需要else對應的。。。
if(a)
.....;
就是如果a就.....,那麼如果a不滿足,就什麼也不做。
if(a)
.....;
else
........;
就是如果a就.....,如果a不滿足就做else下面的那一行。
兩個形式不同。
你無緣無故插else 會破壞**結構。
3樓:鷹弈
看來樓主對if() ... else if() ...else if() ... ... else的用法不清楚
這是一個整體判斷語句,樓主可以看看書,錯誤主要出在了
解決方法:
#include
int sushu(int a)
else if(a>1) //改為a>1,因為負數不等於素數
else
} //加括號,這樣if和else匹配
}else //當a<0是返回0,if()...else if()...else匹配
}void main()
如果對你有所幫助,請記得采納最佳答案,謝謝!
4樓:
沒有錯啊,我測試了
#include
int sushu(int a)
void main()
不過有個警告,int sushu(int a)要有返回值無關緊要了。
5樓:匿名使用者
呵呵,那個return 0是if(a%i==0)後的語句,用else幹嘛
怎麼用c語言判斷數是不是素數,怎麼用c語言判斷一個數是不是素數
樹又綠皮敏 解釋如下 include stdio.h include math.h main include stdio.h include math.h void main 最佳方案是用素數分佈來處理,在處理大素數時尤其合理,用算術基本定理可能太慢了。如果知道素數分佈相關知識,編出來還是很容易的,...
c語言程式設計,寫判斷素數的函式,在主函式輸入整數,輸出是否素數的資訊。幫忙看一下我寫的是不
include int main int argc,char ar else int sushu int x int i for i 2 i 可能是初學者吧 思路基本上是正確的 但是可能一些語法還沒掌握 比如 1.函式的返回值 2.for迴圈中break 3.以及區域性變數 全域性變數作用域等 只要...
用c語言寫一個判斷數字是否是素數的函式
判斷一個整數m是否是素數,只需把m被 2 m 1 之間的每一個整數去除,如果都不能被整除,那麼m就是一個素數。思路1 的 include int main elsereturn 0 判斷方法還可以簡化。m不必被 2 m 1 之間的每一個整數去除,只需被 2 之間的每一個整數去除就可以了。如果m不能被...