加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

算法:C语言实现之“埃拉托色尼筛法”

(2012-11-07 21:33:27)
标签:

it

分类: 算法:C语言实现

练习P49 3.13

代码1:

#include<stdio.h>
#define N 10000
int main()
{
 int i,j,a[N];
 for(i=2;i<N;i++)
  a[i]=1;
 for(i=2;i<N;i++)
  if(a[i])
   for(j=i;i*j<N;j++)
    a[i*j]=0;
 for(i=2;i<N;i++)
  if(a[i])
  printf("%d\t",i);
 return 0;
}

代码2:

#include
#include
void shift_method(int *a, int N) 

    int i,j; 
    for (i = 2; i < N; i++) 
        *(a + i) = 1; 
    for (i = 2; i < N; i++) 
        if(*(a + i)) 
            for ( j = 2; i * j < N; j++) 
                *(a + i * j) = 0; 
    for (i = 2; i < N; i++) 
        if (*(a + i)) 
            printf("�", i); 

int main(int argc, char *argv[]) 

    long int N; 
    if (argc < 2) 
   
        printf("Usage: %s/n",argv[0]); 
        return -1; 
   
    else 
   
        N = atol(argv[1]); 
        int *a = (int *) malloc(N * sizeof(int)); 
        if ( a == NULL ) 
       
            printf("Insufficent memory/n"); 
            return -1; 
       
        shift_method(a,N); 
        return 1; 
   

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有