当前位置: 代码迷 >> C语言 >> 求素数还有什么好方法
  详细解决方案

求素数还有什么好方法

热度:262   发布时间:2008-05-29 21:15:25.0
求素数还有什么好方法
提示: 作者被禁止或删除 内容自动屏蔽
2008-05-29 13:15:25
mqh21364

等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
  得分:0 
好象就这个了,等高手

[[it] 本帖最后由 mqh21364 于 2008-5-29 22:49 编辑 [/it]]
----------------解决方案--------------------------------------------------------
n开到10000000呢?

[color=white]
----------------解决方案--------------------------------------------------------
效率还有很高的提升空间吧  函数2重复的计算有点多

求素数应该有相同的帖


----------------解决方案--------------------------------------------------------

for(i=2;i<sqrt(100);i++)
  {
    for(j=i+1;j<=100;j+=2)
     
     if(a[i]!=0&&a[j]!=0)
     if(a[j]%a[i]==0)
     a[j]==0;  
      
   }
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2008-05-30 01:41:04
界水乘风
该用户已被删除
  得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-05-30 01:43:19
Loli

来 自:飞燕算法群46520219
等 级:新手上路
帖 子:348
专家分:0
注 册:2008-5-27
  得分:0 
also very slow

[color=white]
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2008-05-30 02:16:49
切忌浮躁

等 级:新手上路
帖 子:29
专家分:0
注 册:2008-5-28
  得分:0 
改进的sunkaidong大哥的
#include <stdio.h>
#include<math.h>
#define N 300 /*算到多少的素数*/
int a[N]={1,1,0};
void prime()
{   
    for(int j=0;j<sqrt(N);j++)
        {
                if(a[j]==0)
            for(int i=j*j;i<N;i+=j)
                          a[i]=1;
        }   
}
int main()
{        
        prime();
        for(int i=1;i<N;i++)
           if(a[i]==0)
              printf("%d ",i);
    return 0;
}
----------------解决方案--------------------------------------------------------
  相关解决方案