你能幫我寫乙個篩選素數的 C 程式嗎? 200

發布 科技 2024-06-14
14個回答
  1. 匿名使用者2024-01-29

    雖然你說不要考慮時間和精力等,但我還是和藹地說,我覺得這個程式最好是用PHP寫的。 我曾經用PHP編寫過乙個程式來確定質數,由於它是在伺服器上執行的,因此它比我在計算機上使用VB要快很多倍。

    我不明白c,這是我從大師的空間裡複製的。

    int map[n + 1] = ;

    for (i = 2; i < n; i++)if (map[ i ] == 0)

    for (j = i * 2; j < n; j += i)map[ i ] = 1;

    printf("%d 是質數", i);

    以下是他的工作方式:

    首先找到一張紙,寫下從2-n開始的所有數字,從頭開始,如果數字沒有被劃掉,則劃掉它的所有除數,現在假設n=15在列中。

    如果 2 沒有從一開始就被劃掉,它的所有倍數都會被劃掉,這樣就剩下序列了。

    2 的篩選結束了,當我開始看到仍然存在的第二個數字是 3 時,我劃掉了所有 3 的倍數,剩下的數字列為:

    然後繼續到最後,你會發現剩下的數字最後都是素數。

  2. 匿名使用者2024-01-28

    我不會寫程式。 乙個不考慮時間複雜性的程式。 尤其是這種大數字。 這沒什麼意思...... 如果你沒有程式基礎。 你可能不明白我在說什麼。

    首先,如何判斷乙個大數是否是質數? 直接判斷沒有通用的公式。 而且它只能從2-n使用。

    乙個接乙個地判斷...... 這是為了準確確定乙個數字是否是質數。 但是當它是乙個大問題時。

    光是判斷乙個數字就需要很多迴圈,而且區間裡有很多數字。 那麼這種方法肯定不夠有效。

    六樓的報價方法。 有乙個缺點。 該演算法僅適用於判斷小數間隔。 它不能是對大數字的判斷。 因為大數的陣列。 它很大。 空間的複雜性太大了。

    那麼如何改進這種方法呢? 從而提高效率。

    我的想法是分級過濾。 最後,使用第一步中的演算法來測試無法過濾的數字。

    假設區間 [a,b] 是我們的大數區間...... 總共有 n 個數字。

    迴圈。 n 次。 過濾掉偶數,因為它們可以被 2 整除。 也就是說,還剩下 n 個 2。

    迴圈,步長為 2,剩餘的 n 個 2 個數字逐個除以 3看看是不是可整除的,過濾掉可整除的3。。

    迴圈,以步驟為單位? ,剩餘的數字。 除以 5... 過濾器 5.

    最後一步。 使用最開始的方法。 經過測試和過濾後無法判斷的數字... 還是找不到可整除數。。那是最主要的......

    該演算法的一般流程如下。 因為有最終過濾標準方法的最後一步。 所以。 100%準確篩選... 如果房東還是不太了解。。你能給我留言嗎...

  3. 匿名使用者2024-01-27

    以下過程可以過濾掉 [a,b] 區間內的所有素數。

    #include

    #include

    int isss( int num)

    int i;

    for(i=2;i<=sqrt(num);i++)if(num%i==0)return 0;

    return 1;

    void main()

    int a,b;A 和 B 是區間的左右兩側。

    int i,count=0;count 用於計算素數的數量。

    printf("請輸入該部分的左側和右側");

    scanf("%d%d",&a,&b);

    if(a>=b) 區間的右側必須大於左側。

    printf("輸入有誤! ");

    return;

    for(i=a;i<=b;i++)

    if(isss(i))

    count++;

    printf("%d ",i);

    if(!count)

    printf("這個區間內沒有質數! ");

  4. 匿名使用者2024-01-26

    以下是這個節目的**,希望看完後能記住。

    #include

    #include

    void main()

    int k,i,p,q,m,n=0;

    printf("請給出下限 p 和上限 q:");

    scanf("%d,%d",&p,&q);

    for(m=p+1;m<=q;m=m+2)k=sqrt(m);

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

    if(m%i==0)

    break;

    if(i>=k+1)

    printf("%3d",m);

  5. 匿名使用者2024-01-25

    #include

    void main()

    int i,j;

    printf("1 n 以內的質數:");

    for(i=1;i<=n;i++)

    for(j=2;j<=i/2;j++)

    if(i%j==0)

    break;

    if(j>i/2)

    printf("%d\t",i);

    ps:執行時給 n 分配乙個明文值!!

  6. 匿名使用者2024-01-24

    好吧,我給你一些提示,這些大素數,用隨機演算法,你可以自己搜尋拉賓-公尺勒素數演算法,在“演算法導論”的理由中,如果你想找**,網上有很多,你自己找。 給你這個關鍵詞就足夠了。

  7. 匿名使用者2024-01-23

    對那位邢同學來說,如果 p 是奇數,你的程式就沒有掛了!

  8. 匿名使用者2024-01-22

    1. 編寫我們的標頭檔案和 main 函式。 寫下我們的開始。

    2. 編寫乙個定義變數,並用我們的語言定義乙個 i,用於以下 for 迴圈。

    3. 讓我們輸入乙個數字,在此之前,我們需要有乙個 printf() 提示。

    4. 使用 for 迴圈檢視是否可以從 2 到 n-1 被 n 整除,如果空腔粗糙,則斷開。

    5.判斷素數,如果程式正常結束,i = n,表示他是素數。

    6.如果它以休息結束,他會<>

    7. 輸出最終結果。 早大便。

  9. 匿名使用者2024-01-21

    我們先解釋一下篩選方法的步驟: <1>先挖出1(因為1不是素數)。 <2> 用 2 去掉後面的數字,挖出能被 2 整除的數字,即挖出 2 的倍數。

    3>用3去掉後面的數字,挖出3的倍數。 <4>使用....這些數字用作除數,以從這些數字中刪除數字。 上述操作需要乙個大容器來載入所有數字的集合,只要滿足上述條件,即全部到 2 的 n 次方到 0,3 到 n 次方為 0,4 到 n 次方為 0。

    直到這個資料集的末尾,使不為0的數字是質數,然後按標記找到它,在過濾過程中的步驟如下 如果你覺得這個方法不好理解,你可以用他們上面寫的常規演算法,但是如果數字太大, 計算速度非常慢。

  10. 匿名使用者2024-01-20

    首先標記 2 的倍數,然後標記 3 的倍數。 之後,依次標記陣列中未標記數字的倍數,直到遍歷整個陣列,然後完成。 陣列中未標記的是質數。 這裡的乘數是從 2 開始的整數倍數!

    #include ""

    #include

    using namespace std;

    #define n 1001

    void main(void)

  11. 匿名使用者2024-01-19

    1. 編寫我們的標頭檔案和 main 函式。 寫下我們的開始。

    2. 編寫乙個定義變數,並用我們的語言定義乙個 i 以用於後續的 for 迴圈。

    3. 輸入乙個數字,在此之前,我們需要有乙個 printf() 提示,它使程式看起來是有條件的。

    4. 使用 for 迴圈檢視它是否能被 n 從 2 整除到 n-1,如果可以,則中斷。

    5.判斷素數,如果程式正常結束,i = n,表示他是素數。

  12. 匿名使用者2024-01-18

    篩選法的定律:(以1 1000中的素數為例)我們知道素數的定義:它是乙個素數,只能被1和它本身整除,所以如果你這樣看,只要有乙個既不是1也不是數字本身並除以這個數字的數, 可以說,這個數字不是質數。

    例如,5 是素數,因為 5 只能被 5 和 1 整除,而 6 不是素數,因為 6 除了能被 1 和 6 整除外,還可以被 2 和 3 整除。 試想一下,我們要判斷6是不是質數,我們是否需要迴圈到6來判斷它,不,因為2和3是他的因數,當我們迴圈到2時,我們發現2的所有倍數,比如4、6、8、10、12等,這些數字至少有2個這個因數, 因此,我們可以判斷它們不是素數。而且由於 4 是 2 的倍數,所以當迴圈達到 2 時,已經確定 4 不是質數,所以我們不需要挖出 4 的倍數,只需跳過 4,來到 5,挖出 5 的所有倍數,然後 6、6 以 2 的倍數挖出來, 所以跳過 6 並來到 7....

    迴圈到最後乙個數字,也就是上面7個步驟所說的,剩下的沒挖出來的數字(挖出來的意思就是把這個數字設定為0),也就是不是0的數字就是質數。

    我不知道你是否能理解我在說什麼。 希望對你有所幫助。

    #include

    int main()

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

    if(prime[i]!=0)

    printf("%d ",prime[i]);最後乙個非 0 數字輸出返回 0; }

  13. 匿名使用者2024-01-17

    質數。 大於 1 的自然數不能被除 1 和 100 整數本身之外的任何其他自然數整除的次數。 素數在數論中起著重要作用。

    大於 1 但沒有素數通道的數字稱為合數。 1 和 0 既不是素數也不是復合數。

    通過濾波得到的100以內的素數來源如下:

    include"stdio.h"

    main()

    main()

    inti,j。

    對於 (i = 2; 我< 99 歲; I++

    對於 (j = 2; I++j +

    if(i%j==0)

    破; 如果 (j i 1)。

    printf(“%4d”,i);

  14. 匿名使用者2024-01-16

    總結。 您好,親愛的,使用過濾方法查詢 100 以內的質數。

    篩選方法介紹。

    首先,將 n 個自然數按順序排列。 1 不是質數,也不是合數,劃掉。 第二個數字 2 作為質數保留,2 之後所有能被 2 整除的數字都被劃掉。 2.後面的第乙個不是。

    劃掉的數字是 3,留下 3,然後劃掉 3 後面所有能被 3 整除的數字。 3 後第乙個未交叉的數字是 5,留下 5,然後劃掉 5 後所有可被 5 整除的數字。 如果繼續這樣做,您將過濾掉所有不超過 n 的合數,留下所有不超過 n 的質數。

    這實際上是乙個非常粗糙的解決方案,將質數一一除以!

    程式流程。 * 將 n 個自然數寫入陣列,1 劃掉(設定為 0)。

    所有在 2 後可被 2 整除的數字都被劃掉(設定為 0)。

    設 2 之後的第乙個非零數是設定為 n 的第二個質數,並劃掉 n 之後所有可被 n 整除的數字。

    等等。 在 C 語言中,使用過濾器方法查詢 100 以內的素數? 我以各種方式要求它,請附上流程圖,謝謝。

    這個問題由我來決定,打字需要一點時間,所以請耐心等待。

    您好,親愛的,使用篩選方法查詢 100 以內的素數 篩選方法介紹 首先按順序排列 n 個自然數。 1 不是質數,也不是合數,劃掉。 第二個數字 2 作為質數保留,2 之後所有能被 2 整除的數字都被劃掉。

    2 之後未劃掉的第乙個數字是 3,留下 3,然後劃掉 3 後所有可被 3 整除的數字。 3 後第乙個未交叉的數字是 5,留下 5,然後劃掉 5 後所有可被 5 整除的數字。 如果繼續這樣做,您將過濾掉所有不超過 n 的合數,留下所有不超過 n 的質數。

    這實際上是乙個非常粗糙的解決方案,將質數一一除以! 程式流程*將n個自然數寫入陣列,劃掉(設定為0)*所有在1之後可以被2整除的數字,劃掉(設定為0)*讓2之後的第乙個非0數字成為設定為n的第二個質數,劃掉所有在n之後可以被n整除的數字,劃掉*,依此類推。

相關回答
11個回答2024-06-14

這是乙個 C 程式。 如果你想要乙個C++程式,我可以改變它。 #include >>>More

8個回答2024-06-14

如果只有乙個搜尋條件,則按產品名稱。

欄位為 txtname,表名為 tablename,框名為 txtname。 >>>More

13個回答2024-06-14

1. H 未初始化。

2.J應增加cout<3.if(h=2)應在內迴圈結束後; >>>More

22個回答2024-06-14

讓我舉個小例子。

主程式<字型> >>>More

4個回答2024-06-14

這是我的書名:

問題:輸入 2 個整數,計算並輸出它們的總和、差值、乘積和商。 要求程式輸入不同的資料並執行兩次。 >>>More