码迷,mamicode.com
首页 > 编程语言 > 详细

C语言素数

时间:2015-09-09 13:20:59      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

求1-10000之间的素数,并打印出来。

使用了sbrk和brk函数,采用直接操作内存的方式,尽量减少循环次数,每次进行素数判断仅与之前的素数进行相除。该代码并不健壮,仅作练习用。

 

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int *p;

int    Primer(int a,int *size);
main()
{
    int a=10000;
    int size;
    p=sbrk(0);
    Primer(a,&size);
    int i=0;
    for(;i<size;i++)
    {
        printf("%d\n",p[i]);    
    }
}

int    Primer(int a,int *size)
{
    
    int i=0;
    int *r;
    int sizePr;
    if(a<4)
    {
        *size=a;
        r=p;
        for(;i<a;i++)
        {
            brk(r+1);
            *r=i+1;
            r=sbrk(0);
        }
    }
    else
    {        
        Primer(3,&sizePr);
        int j=4;
        for(;j<=a;j++)
        {
            int si=1;
            r=&p[sizePr];
            int c=0;
            for(;si<sizePr;si++)
            {
                if(j%p[si]==0)
                {
                    c=1;
                    break;
                }
            }
            if(c==0)
            {
                brk(r+1);
                *r=j;
                r=sbrk(0);
                sizePr++;
            }
        }
        *size=sizePr;
    }
    printf("Primer:%p\n",p) ;
    return 0;
}

 

C语言素数

标签:

原文地址:http://www.cnblogs.com/fastcam/p/4794303.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!