| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2358 人关注过本帖
标题:作业不会写,关于求素数。
只看楼主 加入收藏
hllSaturn
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2015-12-20
结帖率:62.5%
收藏
已结贴  问题点数:2 回复次数:10 
作业不会写,关于求素数。
.用筛法求1~1000之间的素数。
eratosthenes筛法:
1)利用数组存放这1000个数;
2)挖掉第一个数1(令该数=0);
3)2没被挖掉,挖掉后面所有2的倍数;
4)3没被挖掉,挖掉后面所有3的倍数;
5)4被挖掉,不执行任何操作;
6)5没被挖掉,挖掉后面所有5的倍数;
7)····直到最后一个数;
8)剩下的非0数就是素数。

还要求出每次求出一个素数后,还剩下多少个数???就这个不会!!!
2015-12-20 16:43
brokenheart
Rank: 2
等 级:论坛游民
帖 子:64
专家分:25
注 册:2015-11-7
收藏
得分:1 
回复 楼主 hllSaturn
你应该先自己试着打一些代码,这样的问法,可能会被删帖的
2015-12-24 19:33
brokenheart
Rank: 2
等 级:论坛游民
帖 子:64
专家分:25
注 册:2015-11-7
收藏
得分:0 
回复 楼主 hllSaturn
#include "stdio.h"
#include "math.h"
int main(int argc, char* argv[])
{
    int n,m,i,j,x;
    int a[1000];                //在此条件下要求n小于1000
    int prime[11] = {2,3,5,7,11,13,17,19,23,29,31};
    do
    {
        scanf("%d",&n);                   //所求即为小 于n的所有素数
        if(n<2 || n>1000)
            printf("您的输入有误,请重新输入!\n");
    }
    while(n<2 || n>1000);
    for(i=0; i<n; i++)
    {
        //数据元素初 始化
        a[i] = i+1;

    }
    for(i=n; i<1000; i++)
    {
        a[i] = 0;
    }
    int temp=(int)sqrt(n);          //n内必含小 于根号n的素数
    int note=0;
    for(j=0; j<11; j++)
    {
        if(prime[j]<temp)
            note++;
    }
    for(m=0; m<note; m++)
    {
        for(x=0; x<n; x++)
        {
            if(a[x] % prime[m] == 0)       a[x]=0;
        }
    }
    printf("----------------------------%d 以内的素数如下所示 ----------------------------\n",n);
    for(m=0; m<note; m++)
        printf("%d  ",prime[m]);
    for(m=0; m<n; m++)
    {
        if(a[m] != 0 && a[m]>temp)
        printf("%d ",a[m]);
    }
    printf("\n-----------------------------------------------------------------------------\n");
    return 0;
}
2015-12-24 19:47
ntprc0x
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:23
专家分:130
注 册:2015-11-14
收藏
得分:1 
#include<stdio.h>

#define N 1001

int main(void)
{
    int i,j,count,a[N];
    int m = N - 1 - 1;                //初始总数 去掉 1 和 0
    for(i=2;i<N;i++)
        a[i] = 1;
    for(i=2;i<N;i++)
        if(a[i])
        {
            for(count=0,j=i;i*j<N;j++)
            {
                if(a[i*j])            //注意可能重复被挖
                {
                    a[i*j] = 0;
                    count++;        //记录挖掉的次数
                }
            }
            m -= count+1;            //剩余总数  减去挖掉的次数 和 这个素数
            printf("%4d\t%4d\n", i, m);
        }
    /*
    for(i=2;i<N;i++)
        if(a[i])
            printf("%d\n", i);
    */
    return 0;
}
2015-12-24 21:20
土包子的夏天
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-12-24
收藏
得分:0 
坐等被删

我什么都不知道——来自大山的土包子
2015-12-24 21:29
码程小伙
Rank: 2
等 级:论坛游民
威 望:1
帖 子:27
专家分:81
注 册:2015-12-11
收藏
得分:0 
。。。。。。。。这样问作业不好吧
2015-12-24 21:47
autumnyellow
Rank: 2
等 级:论坛游民
帖 子:72
专家分:75
注 册:2015-4-14
收藏
得分:0 
反对发布作业
2015-12-25 19:53
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
这种代码写太多次了,楼主搜搜吧。

能编个毛线衣吗?
2015-12-25 20:05
hllSaturn
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2015-12-20
收藏
得分:0 
回复 2楼 brokenheart
好哒~第一次上论坛~没经验~以后会注意的~感谢
2015-12-27 16:56
hllSaturn
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2015-12-20
收藏
得分:0 
回复 4楼 ntprc0x
感谢!!!!
2015-12-27 16:57
快速回复:作业不会写,关于求素数。
数据加载中...
 
   



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

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