广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 12133 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为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.014948 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言