廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 5873 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
0937711311 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x11
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[學習] SOS!!!!!雙生質數( C 語 言)
若N是質數,且N+2也是質數,則稱為【雙生質數】。
請寫一C程式,輸入a b兩數字,輸出a、b之間的雙生質數,直到輸入-1為止。

每組雙生質數,以tab隔開。
範圍內的雙生質數,彼此換行列印。
若該範圍無雙生質數,則輸出"此範圍內無雙生質數"。
不同範圍內的結果,以10個"="符號隔開。

請注意! a大於等於2,且a不一定小於b。

輸入範例:
2 50
100 80
-1

輸出範例:
3     5
5     7
11     13
17     19
29     31
41     43
==========
此範圍內無雙生質數
==========



獻花 x0 回到頂端 [樓 主] From:臺灣 | Posted:2007-05-30 22:23 |
ety 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x719
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

複製程式
#include <stdio.h>
#include <math.h>

int prime(int input)
{
    int x;
    int result;
    int loop;

    x = (int)sqrt((double)input);
    result = 1;

    for (loop = 3; loop <= x; loop += 2)
    {
        if (input % loop == 0)
        {result = 0;}
    }

    if (result == 1)
    {return 1;}
    else
    {return 0;}
}

int main(void)
{
    int a;
    int b;
    int loop;
    int result;

    while (scanf("%d", &a) == 1)
    {
        if (a == -1)
        {return 0;}
        else
        {scanf("%d", &b);}

        if (a < 2)
        {
            printf("==========\n請注意! a大於等於2,且a不一定小於b。\n==========\n");
            return 0;
        }

        if (a > b)
        {
            a = a + b;
            b = a - b;
            a = a - b;
        }

        result = 1;

        while (!(a & 1))
        {a = a + 1;}

        for (loop = a; loop < b; loop += 2)
        {
            if (prime(loop))
            {
                if (prime(loop + 2))
                {
                    printf("%d\t%d\n", loop, loop +  2);
                    result = 0;
                }
            }
        }

        if (result)
        {printf("==========\n此範圍內無雙生質數\n==========\n");}
    }

    return 0;
}



[ 此文章被ety在2007-06-01 14:25重新編輯 ]


獻花 x0 回到頂端 [1 樓] From:臺灣和信超媒體寬帶網 | Posted:2007-06-01 14:13 |
0937711311 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x11
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

真是太感謝~大大~~~~~了~感動~我去試試看


獻花 x0 回到頂端 [2 樓] From:臺灣固網公司 | Posted:2007-06-01 22:10 |
ety 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x719
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

十個等號我放的位置不符你們老師的說明喲,
記得要修改!


獻花 x0 回到頂端 [3 樓] From:臺灣和信超媒體寬帶網 | Posted:2007-06-02 04:41 |
0937711311 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x11
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

可以幫我加上註解嗎


獻花 x0 回到頂端 [4 樓] From:臺灣 | Posted:2007-06-03 21:37 |
ety 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x719
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

全部是不可能的...

不過, 你可以告訴我哪幾行你看不懂, 我可以解釋!


獻花 x0 回到頂端 [5 樓] From:臺灣和信超媒體寬帶網 | Posted:2007-06-03 21:50 |
0937711311 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x11
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

loopg是變數嗎


獻花 x0 回到頂端 [6 樓] From:臺灣 | Posted:2007-06-03 22:15 |
ety 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x719
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

是的, 它是一個 int 型態的變數!


獻花 x0 回到頂端 [7 樓] From:臺灣和信超媒體寬帶網 | Posted:2007-06-03 22:24 |
ety 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x719
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

花了點時間改寫並且加了註解, 若還是連看都看不懂, 我認為你該被當。
我直接給你答案, 老實說這跟作弊沒兩樣了。

表情


複製程式
#include <stdio.h>
#include <math.h> // 因為有用到 sqrt(),所以才宣告。

int p(int i) // 此為判斷是否為質數之副程式,若輸入值為質數便回傳 1,否則回傳 0。
{
    int x = (int)sqrt((double)i), r = 1, l; // 對'輸入質i'開根號,然後儲存於'變數x'。

    for (l = 3; l <= x; l += 2)
    {if (i % l == 0) r = 0;}

    return r;
}

int q(int a, int b) // a 是'輸入值a',b 是'輸入值b'。
{
    int r = 1, l; // r 是運算結果,若輸入值ab區間有雙生質數便設為 0 ,否則為 1 ,l 是’迴圈計數變數’。

    if (!(a & 1)) a += 1; // 以及閘來作邏輯判斷,若'輸入值a'是偶數就加 1 ,使其變為奇數。

    for (l = a; l < b; l += 2) // 單純只考慮奇數(因為除了 2 不可能有質數同時為偶數的情況),故迴圈每次不只加 1 而是加 2。
    {
        if (p(l)) // 呼叫'副程式p'來判斷’迴圈計數變數’是否為質數。
        {
          if (p(l + 2)) // 若’迴圈計數變數’是質數便再呼叫'副程式p'來判斷’迴圈計數變數’ + 2 是否也為質數。
          {
            printf("%d\t%d\n", l, l + 2); // 輸出雙生質數。
            r = 0;
          }
        }
    }
    r ? printf("此範圍內無雙生質數\n==========\n") : printf("==========\n"); // 若輸入值ab區間無雙生質數便輸出'此範圍內無雙生質數=========='的訊息,否則只輸出'=========='的訊息。
}

int main(void)
{
    int a, b, l; // a 是'輸入值a',b 是'輸入值b',l 是迴圈計數變數。

    while (scanf("%d", &a) == 1) // 讀取鍵盤輸入的數值並儲存為'輸入值a'。
    {
        if (a == -1) return 0; // 若'輸入值a'是 -1 便結束此程式。
        scanf("%d", &b); // 讀取鍵盤輸入的數值並儲存為'輸入值b'。
        a < 2 ? printf("請注意! a一定要大於或等於2。\n==========") : a < b ? q(a, b) : q(b, a); // 若'輸入值a'小於 2 便輸出錯誤訊息,否則就將'輸入值a'與'輸入值b'交由'副程式q'來處理。
    }

  return 0;
}



獻花 x1 回到頂端 [8 樓] From:臺灣和信超媒體寬帶網 | Posted:2007-06-03 22:51 |
ety 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x719
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

對了, 程式了我有用到 ? : 這種寫法, 跟 if else 是一樣的!

例如:

if (a == b)
{........}
else
{........}

跟下面這是一樣的:

a == b ? .......... : ..........


獻花 x0 回到頂端 [9 樓] From:臺灣和信超媒體寬帶網 | Posted:2007-06-03 22:59 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.082953 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言