| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 813 人关注过本帖
标题:c和指针习题四: 求素数的题目
取消只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:30 回复次数:2 
c和指针习题四: 求素数的题目
程序代码:
#include <stdio.h>
/*
  c和指针习题四:
  质数就是只能被1和本身整除的整数,Eratosthenes筛选法是一种计算质数的有效方法
  这个算法的第一步就是写下所有从2至某个上限的所有整数。在算法的剩余部分,你遍
  历整个列表,并剔除所有不是质数的整数。以下省略N字。
  编写一个程序,实现这个算法使用数组表示你的列表,每个数组元素的值用于标记对应
  的数是否已经剔除,开始时数组所有元素都设置为true,当算法要求剔除该元素时,就
  把这个元素设置为false。
  要求:你可以使用下标来标记指向数组首元素和数组尾元素的指针,但应该使用指针来
  访问数组元素。
*/
//我设计的一个子函数,用于能够查找第N个TRUE的数组下标
int count_true(bool source[],int n,int sz_len)
{
    int ret=-1;
    bool *p_begin=source;
    for(int i=0;i<sz_len;i++)
    {
        if(*p_begin==true) ret++;
        if(ret==n)
        {
            return i;
        }
        p_begin++;
   
    }
    return -1;
}


int main(void)
{
    //数组元素代表的是 2..101;对应数组下标分别为i+2
    bool source[100];
    for(int i=0;i<100;i++) source[i]=true;
    int len=sizeof(source)/sizeof(source[0]);
    bool *p_begin=source;
    bool *p_begin2=source;
    bool *p_end=source+len;
    int first=0;
    int c_t=0;
    while(first!=-1)
    {
        int second=first+1;  //从下一个true的下一个元素开始删除
        p_begin+=second;
        while(*p_begin<*p_end)
        {
            if ((second+2)%(first+2)==0) *p_begin=false; //用于删除非素数元素
            second++;
            p_begin++;
        }
        p_begin=p_begin2;
        first=count_true(source,c_t++,len); //查找下一个true
    }
    for(i=0;i<len;i++)
    {
        if(source[i]==1) printf("%4d",i+2);

    }
    return 0;
}
搜索更多相关主题的帖子: 元素 
2012-12-02 11:47
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用神龙赖了在2012-12-2 12:02:28的发言:

额,虽然你把题目和源文件都发出来了,但是....要我们做什么呢...
随意,海阔天空

DO IT YOURSELF !
2012-12-02 12:38
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
如果有可能的话  大牛们也贴一下 你们的代码

借鉴一下

DO IT YOURSELF !
2012-12-02 12:44
快速回复:c和指针习题四: 求素数的题目
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016866 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved