求大神幫我看看這一段判斷素數的c語言程式

時間 2021-12-23 01:10:59

1樓:

先讓我明確一下你的問題,你很糾結為什麼“if ( isprime(m) )” 不寫成不用“if ( isprime(m) == ture )”。是把?

是這樣的,你所說的那個寫法是最標準的,但是為了方便一般,會寫成程式裡面的那樣。從變異的原理上來講,是沒有錯的。因為isprime(m)的返回值,是bool型的,結果只有1(對應true)和0(對應false),當你所說的isprime(m) == ture時候,就相當於isprime(m)執行後,返回了1給if語句,而當if()的括號中的值,不是0的時候,就會執行if()下面的“printf("yes!

\n");” 語句了;反之,如果isprime(m) == false時候,if()的括號中的值就是0,這樣就執行“isprime(m) == ture”語句了。

至於你一定要問,既然這兩種都可以,那麼為什麼這麼寫,而不是你說的那麼寫?我只能說這是個人的習慣問題。如果你一定要按你那麼寫,也是沒有錯的。

只是習慣問題,沒必要太鑽牛角尖,接受就好了。願意用,就用;不願意用,就按自己的來。

希望能幫助到你。還有什麼問題,歡迎追問。

2樓:匿名使用者

// 判斷素數

//if

//語法:

// if( conditiona )

//// else if( conditionb )

//// ...

//// else

////

////if 構造一個允許不同的**在不同的條件下執行的分支機制.conditions

//是判斷語句,statement-list . 假如條件為假, else語句塊將被執行,所有的else是可選的.

////所以if(isprime(m)) 即可,當然if(isprime(m) == ture ) 也是可以的

//祝學習進步,更上一層樓 *(^-^)*

3樓:

if ( isprime(m) ) 等同於 if ( isprime(m) == ture ),

if ( !isprime(m) ) 等同於 if ( isprime(m) != ture )。

if()裡面跟的就是一個邏輯值。

4樓:精武

if()裡面的 條件預設為真。

5樓:匿名使用者

isprime(m)如果返回true if表示式成立 返回false 則不成立,ok????

求判斷素數的c語言程式

6樓:囧神黃昏

c語言bai-尋找素數

附代du

碼:#include

#include

int main()//原理:設ab=c,zhia有a《根號daoc恆小於根版號c,則只需判斷a是否為因權數

}if (m==0)

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

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

return 0;}

7樓:匿名使用者

#include "stdio.h"

void main()

printf("%d是素數\n",n);}}

求c語言中 判斷素數的 **!!!!!

8樓:東鼕鼕鼕鼕冬

基本思想:把m作為被除數,將2—int( )作為除數,如果都除不盡,m就是素數,否則就不是。

可用以下程式段實現:

void main()

}}2、

說明:解決這個問題的訣竅是如何安排刪除的次序,使得每一個非質數都只被刪除一次。 中學時學過一個因式分解定理,他說任何一個非質(合)數都可以分解成質數的連乘積。

例如,16=2^4,18=2 * 3^2,691488=2^5 * 3^2 * 7^4等。如果把因式分解中最小質數寫在最左邊,有16=2^4,18=2*9,691488=2^5 * 21609,;

換句話說,把合數n寫成n=p^k * q,此時q當然是大於p的,因為p是因式分解中最小的質數。由於因式分解的唯一性,任何一個合數n,寫成n=p^k * q;的方式也是唯一的。

由於q>=p的關係,因此在刪除非質數時,如果已知p是質數,可以先刪除p^2,p^3,p^4,... ,再刪除pq,p^2*q,p^3*q,...,(q是比p大而沒有被刪除的數),一直到pq>n為止。

因為每個非質數都只被刪除一次,可想而知,這個程式的速度一定相當快。依據gries與misra的文章,線性的時間,也就是與n成正比的時間就足夠了(此時要找出2n的質數)。

**如下:

#include

#include

using namespace std;

int main()

int n; cin>>n;

int *location=new int[n+1];

for(int i=0;i!=n+1;++i)

location[i]=i;

location[1]=0; //篩除部分

int p,q,end;

end=sqrt((double)n)+1;

for(p=2;p!=end;++p)

if(location[p])

for(q=p;p*q<=n;++q)

for(int k=p*q;k<=n;k*=p)

location[k]=0;

int m=0;

for(int i=1;i!=n+1;++i)

if(location[i]!=0)

cout<++m;

if(m%10==0) cout

該**在visual studio 2010 環境下測試通過。

以上兩種演算法在小資料下速度幾乎相同。

9樓:的和有關法規

方法有2個:

1、判斷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;

2、判斷n是否能被2~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;

擴充套件資料:

c語言的模組化程式結構用函式來實現,即將複雜的c程式分為若干模組,每個模組都編寫成一個c函式,然後通過主函式呼叫函式及函式呼叫函式來實現一大型問題的c程式編寫,因此常說:c程式=主函式+子函式。因此,對函式的定義、呼叫、值的返回等中要尤其注重理解和應用,並通過上機除錯加以鞏固。

判斷語句(選擇結構):

if 語句:“如果”語句;if—else 語句:“若…(則)…否則…”語句;switch 語句:“切換”語句;switch—case:“切換—情況”語句。

迴圈語句(迴圈結構):

while 語句:“當…”語句;do—while 語句:“做…當…(時候)”語句;for 語句:條件語句(即“(做)…為了…”語句)。

跳轉語句(迴圈結構:是否迴圈):

goto 語句:“轉舵”語句,也稱“跳轉”語句;break 語句:“中斷”(迴圈)語句,即結束整個迴圈;continue 語句:

“繼續”語句(結束本次迴圈,繼續下一次迴圈);return 語句:“返回”語句。

需要說明的是:

1、一個c語言源程式可以由一個或多個原始檔組成。

2、每個原始檔可由一個或多個函式組成。

3、一個源程式不論由多少個檔案組成,都有一個且只能有一個main函式,即主函式。是整個程式的入口。

4、源程式中可以有預處理命令(包括include 命令,ifdef、ifndef命令、define命令),預處理命令通常應放在原始檔或源程式的最前面。

5、每一個說明,每一個語句都必須以分號結尾。但預處理命令,函式頭和花括號“}”之後不能加分號。(結構體、聯合體、列舉型的宣告的“}”後要加“ ;”。)

6、識別符號,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。

書寫規則

1、一個說明或一個語句佔一行。

2、用{} 括起來的部分,通常表示了程式的某一層次結構。{}一般與該結構語句的第一個字母對齊,並單獨佔一行。

3、低一層次的語句或說明可比高一層次的語句或說明縮排若干格後書寫。以便看起來更加清晰,增加程式的可讀性。在程式設計時應力求遵循這些規則,以養成良好的程式設計風格。

10樓:摩羯面對現實

c語言中判斷素數的**如下:

#include

int is_prime(int n)

int i;

if(n<=1)

return 0;

for(i=2;i*i<=n;i++)

if(n%i==0)

return 0;

return 1;

int main()

int i,n=0,t=1;

printf("1000以內的素數排列:\n");

for(i=2;i<1000;i++)

if(is_prime(i))

n++;

t++;

printf("%4d",i);

if(t>10)

printf("\n");

t=1;

printf("\n1000以內的素數共有%d個\n",n);

return 0;

擴充套件資料:

c語言中判斷素數的其他**:

#include

int main(void)

unsigned long num;

unsigned long div;

int isprime;

printf("please enter an integer for analysis. ");

printf("enter q to quit.\n");

for(div = 2, isprime = 1;(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);

isprime = 0;

if(isprime == 1){

printf("%lu 是素數.\n", num);

printf("please enter another integer for analysis. ");

printf("enter q to quit.\n");

printf("bye.\n");

return 0;

誰幫我翻譯一段中文,誰可以幫我翻譯這一段文章,翻譯成中文。謝謝大家啊。

襡星瑀 正確的放棄,才是成功的選擇 生活中的人們或許都有過某種重要東西丟失的事情,並且在心理上大都會留下這樣那樣的陰影,或許會為生活中發生的一次誤會而懊惱不已,或許會為生命中悄然流失的歲月而惋惜悲傷,或許會對人生中曾經的輝煌而留戀感嘆!究其原因,無非就是沒有及時調整好心態面對失去,沒有從心理上承認失...

如何解除這一段心碎的婚姻,如何解除這一段心碎的婚姻

1 收集家庭暴力證據離婚時候可以要求對方賠償2 沒有離婚就與人長期同居涉嫌重婚罪,可以要求離婚3 男方是過錯方,要求少分財產,房子歸女方4 孩子撫養主要看誰撫養孩子對孩子有利,盡量提出女方撫養孩子有利孩子成長條件,不撫養孩子方承擔一半撫養費。如果孩子10歲以上還應該徵求孩子意見。這樣的男人還不如離婚...

求完整的翻譯,日語翻譯,求翻譯以下這一段日語。要完整翻譯!

難道都沒看出來採的那個是機翻麼。手翻。給!一半 甜甜圈 作詞 古屋真 作曲 中村僚 中村友 歌 戸松遙 夕陽 甘 匂 帰 夕陽散發出甜甜的味道 不想回家啊 遠 感覺到似乎什麼都在遠方的那段時光 茜 染 遊覧船 戻 被染成夕陽紅的遊覽船 會歸航嗎?季節 取 殘 気分 不知為何 有種被季節遺棄了的感覺 ...