廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 12142 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
UBL 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x33
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++] [求助][C]第幾個質數[已解決]
想問一下各位大大...
就是當我想找第"1"個質數他就出現"2"...以此類推...
***********************************************
#include <stdio.h>
#include & ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



[ 此文章被UBL在2005-01-31 10:07重新編輯 ]


以花代替感謝文..我會更高興喔..^^

獻花 x0 回到頂端 [樓 主] From:台灣中華電信 | Posted:2005-01-24 20:49 |
codeboy 手機
個人文章 個人相簿 個人日記 個人地圖
社區建設獎
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x6 鮮花 x331
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

剛剛只想到...求到多少之間的質數
再想想有沒有更好的~表情

複製程式
#include <stdio.h>
#define MAX_PRIME 100

int main()
{
  char x[MAX_PRIME+1];
  int c,j;
  printf("2 ");
  for (c=3;c<=MAX_PRIME;c+=2)
  {
    if(x[c])
    {
     printf("%d",c);
     printf(" ");
     for (j=(c<<1);j<=MAX_PRIME;j+=c) x[j]=0;
    }
  }
  system("PAUSE");
}

此文章被評分,最近評分記錄
財富:10 (by panasonic732)
財富:10 (by panasonic732)



連結有問題請來信,我會盡快修正~^^
通報時請附上是"哪一篇失效"...這樣我才能去修正~麻煩各位好心人士了~

[連結失效通報][ 網頁.伺服.程式 討論區]
----------------------在世界中心呼喊愛情----------------------
深深思念一個人的時候,我們不知不覺的地活在世界的中心...
獻花 x0 回到頂端 [1 樓] From:台灣 | Posted:2005-01-24 22:03 |
pkpk0808 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x9
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

我的做法是"先建表"
不過建表的效率有點糟糕 不過數字不大就別計較了 表情

code內不能用顏色還滿醜的
快把他複製到編輯器裡面看吧

當然有錯誤請指正

複製程式
/*
  尋找第n個質數
  Design by koukaipan 2005.01.25
  Edited & Compiled by DevC++ 4.9.9.0
  版權沒有 引用附上koukaipan原著
*/

#include <stdio.h>
#include <conio.h>

#define MAX 50

/*建立質數表*/
void make_list(int arr[])
{
    int n = 1, //n為陣列足標 代表第n個直數 
        i,     //建表loop
        j;     //判斷質數loop 
    
    for (i=2; i<=32767 && n<=MAX; i++)
    {
        for (j=2; j*j<=i; j++)
        {
            if( i % j == 0)
                break;
        }//end 判斷i的for loop
        if (j*j > i)
        {
            arr[n] = i;
            n++;
        }//end if    
    }//end 建表的for loop 
}//end function make_list    

int main()
{
    int arr[MAX], m;
    
    make_list (arr);
    
    while(1) //讓程式一直跑
    {
    scanf("%d", &m);
    
    printf("%d\n", arr[m]);
    }//end while 

    getch();
    return(0);
}//end main




建表部分用到陣列指標 應該看的懂吧
比較有效率的方法是
一邊找質數 一邊建表
找質數的時候 用質數表內的去除 會有效率很多

and 裡面有很多可以拿掉的大括號
不過我沒有拿到 我覺得這樣會看的比較清楚一點

還有 我的函數不能套用到樓主的函數中喔
因為樓主的函數引數為n(第n個)
我的函數引數為陣列指標


謝謝大家 表情


[ 此文章被koukaipan在2005-01-25 15:32重新編輯 ]

此文章被評分,最近評分記錄
財富:5 (by panasonic732)
財富:5 (by codeboy) | 理由: 感謝幫助版友喔~這也是不錯的解法


獻花 x0 回到頂端 [2 樓] From:台灣中華電信 | Posted:2005-01-25 15:21 |
pkpk0808 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x9
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

這是利用質數表找質數建表的部分
避免累贅只po出副函式部分

複製程式
void make_list(int arr[])
{
    int n = 1, //n為陣列足標 代表第n個直數 
        i,     //loop
        j;     //判斷質數迴圈 
    
    arr[1] = 2;
    
    for (i=2; i<=32767 && n<=MAX; i++)
    {
        for (j=1; j<=n; j++)
            if( i % arr[j] == 0)
                break;

        if (j > n)
            arr[++n] = i;
    }//end 建表的for loop 

}//end function make_list


此文章被評分,最近評分記錄
財富:5 (by panasonic732)
財富:5 (by codeboy) | 理由: 感謝幫助版友喔~


獻花 x0 回到頂端 [3 樓] From:台灣中華電信 | Posted:2005-01-25 15:32 |
UBL 手機
個人頭像
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x33
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

謝謝各位大大的幫忙...

我把題目打出來一下好了...
"試撰寫-- int prime(int n),可用來找出第n個質數(第一個質數為2,第二個質數為3,以此類推),並以此函數找出第100個質數."---出自C語言教學手冊8-65第7題
因為我現在是看書自學中...只看到"函數"...陣列和指標是下一章的...
我是想說能不能用迴圈寫...


以花代替感謝文..我會更高興喔..^^

獻花 x0 回到頂端 [4 樓] From:台灣中華電信 | Posted:2005-01-25 16:20 |
pkpk0808 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x9
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

恩..其實用不用陣列指標都沒有差..還是用一樣的觀念
恩..將函式的引數就是n
一樣先建表
陣列的宣告就放在副函式而不是main中

最後可以用return傳回答案值

複製程式
int prime(int y)
{
int arr[MAX];
/*
建表
*/

return ( arr[y] );
}

大體上是這樣..建表和main的code就留給你修改了..
try it!!!!


獻花 x0 回到頂端 [5 樓] From:台灣中華電信 | Posted:2005-01-25 17:58 |
horrylee 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x86
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

一時間想不到啥公式..
就用笨方法..
一個一個找..

複製程式
int prime(int n)
{
   int i,j,num;

   num = 0;                //第幾個質數
   i=1;                        //質數數值
   while(n != num){   
       i++;                    
       j = i-1;
       for(j; j >= 1; j--){  
           if(j==1){         //到1都無法有任何數可整除,為質數
               num++;
               break;
           }
           if((i%j) == 0){
               break;
           }
       }
   }
   return i;                
}


上班太無聊..
弄了個執行檔..
用bcb compile的..
套了個MacOS風格的form..
結果檔案變超級大..@@

不知道結果是不是對的..
給你試試看吧..

http://nursechi.myweb.hin...me_num.rar


[ 此文章被horrylee在2005-01-27 14:48重新編輯 ]

此文章被評分,最近評分記錄
財富:10 (by panasonic732)


獻花 x0 回到頂端 [6 樓] From:台灣中華電信 | Posted:2005-01-27 14:31 |

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