所谓孪生素数指的就是间隔为 2 的相邻素数。首先我要判断一个数是否为素数,其次考虑相邻素数的差值是否为2。如果我们要存储10000以内的孪生素数,我们要为它们分配多少空间呢?这个往往是无法确定的!那么我们就要用动态内存分配,这里介绍sbrk和brk函数,这两个函数包含在unix标准头文件中,具体实现代码如下:
#include <stdio.h>
#include <unistd.h>
int isPrimer(int n);
int main()
{
int i;
int *p = sbrk(0);//获得空闲首地址,尾地址与其重合,此时无物理映射
int *r = p;
brk(r+1);//将尾地址后移4字节,恰能放一个int,实际上,有4KB物理映射
*r = 2;//初始化
for(i=3;i<10000;i++)//检测10000以内的孪生素数
if(isPrimer(i))//判断i是否素数
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余2页未读,立即下载