| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 834 人关注过本帖
标题:帮帮忙,求素数的编程
只看楼主 加入收藏
ouyangouyang
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:579
注 册:2009-10-8
结帖率:96%
收藏
已结贴  问题点数:30 回复次数:11 
帮帮忙,求素数的编程
我的想法是这样的,首先设一个数组头两项为2和3(素数),然后用4到1000的数分别除以数组的前面项,如果都除不断就说明这个数是素数,然后就把这个数放入数组后面项,再循环求出4到1000的所有素数。我是菜鸟编了几天都没成功,那位老大给个答案,小弟在此谢谢了!!!
搜索更多相关主题的帖子: 素数 
2009-10-11 08:59
LEED
Rank: 2
等 级:论坛游民
帖 子:75
专家分:43
注 册:2009-8-26
收藏
得分:0 
希望大虾们顶起来。。
2009-10-11 10:46
Aion
Rank: 2
等 级:论坛游民
帖 子:19
专家分:52
注 册:2009-10-10
收藏
得分:0 
#include<stdio.h>
#include<math.h>

char pmap[5001];
int primes[1000];

int find(int n)
{
    int i,t,e=(int)(sqrt((double)n)+0.0001);
    for (i=3; i<=e; i+=2)
        for (t=pmap[i>>1]*n+i*i; t<=n; t+=i+i)
            pmap[t>>1]=1;
    for (primes[t=0]=2,i=3,e=n/2-1; i<=e; ++i)
        if (!pmap[i]) primes[++t]=(i<<1)+1;
    return t+1;
}
int main()
{
    int n = find(1000);
    for (int i=0; i<n; ++i)
    {
        printf("%d,", primes[i]);
    }
    printf("\n共%d个素数\n", n);
    return 0;
}


[ 本帖最后由 Aion 于 2009-10-11 12:52 编辑 ]

Admin

专门做题
2009-10-11 11:33
LEED
Rank: 2
等 级:论坛游民
帖 子:75
专家分:43
注 册:2009-8-26
收藏
得分:0 
楼上的。。好像不能达到如期的 效果耶。。。
2009-10-11 12:36
Aion
Rank: 2
等 级:论坛游民
帖 子:19
专家分:52
注 册:2009-10-10
收藏
得分:0 
之前的代码的一些细节没检查,现在好了

Admin

专门做题
2009-10-11 12:53
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "math.h"
void main()
{
    int a[2000];
    int i,j,m,k=0;
    for(i=0;i<999;i++)
       {
        a[i]=i+2;
        m=sqrt(a[i]);
        for(j=2;j<=m;j++)
               if(a[i]%j==0)
                 break;
        if(j>=m+1)
        {
            a[999+k]=a[i];
            k++;
        }
       }
     for(i=1;i<=k;i++)
     {
         printf("%5d",a[998+i]);
     if(i%10==0)
     printf("\n");
     }
}   
不知道楼主是不是这个意思。但是先把要判断的数放到数组里,未免多余吧,而且判断出当它是素数的时候,可以直接输出,为什么还要放到数组的后面去。可能你有别的打算和想法,不过在判断过程中加入数组会使问题复杂化。
2009-10-11 13:11
ouyangouyang
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:579
注 册:2009-10-8
收藏
得分:0 
谢啦,谢啦,太厉害了

多少恨, 昨夜梦魂中。 还似旧时游上苑, 车如流水马如龙; 花月正春风!
2009-10-11 14:40
evergogo
Rank: 2
来 自:宇宙-C星球
等 级:论坛游民
帖 子:64
专家分:25
注 册:2009-10-11
收藏
得分:0 
都还不知道什么意思呢! 看都看不懂  哎!

异星球#include变种的C!
2009-10-11 14:49
爱无所爱
Rank: 2
来 自:成都
等 级:论坛游民
帖 子:5
专家分:10
注 册:2008-4-22
收藏
得分:0 
#include <stdio.h>
#include <math.h>
 
int Prime(int n)
{
    int i;
    for (i=2;i<=sqrt(n);i++)     
    {
        if (n%i==0)
        {
            return 0;            
        }
    }
    return 1;
}
 
void main()
{
    printf("请输入一个整数:");
    int n;     
    scanf("%d",&n);
    if (Prime(n))
    {
        printf("%d是一个素数\n",n);
    }  
    else
    {
        printf("%d不是一个素数\n",n);
    }
}
尽可能把函数提出来的一个好习惯。
2009-10-11 15:11
hotbloodboy
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2009-10-11
收藏
得分:0 
确实不错,学习下

http://shop34118035.专业批发上网本qq:1019515620
2009-10-11 15:18
快速回复:帮帮忙,求素数的编程
数据加载中...
 
   



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

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