标题:如何用筛选法求1到100的素数和非素数
只看楼主
零距离98
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-12-9
结帖率:66.67%
已结贴  问题点数:20 回复次数:5 
如何用筛选法求1到100的素数和非素数
请各位帮我检查这个程序错在哪?
#include<stdio.h>
#include<math.h>
void main()
{
    int i,m,a[100];
    for(i=0;i<100;i++)
    {
        a[0]=1;
        a[i]=a[i-1]+1;
        if(i>=1)
        for(m=2;m<a[i];m++)
        {
            if(a[i]%m==0)
            printf("不是素数的有:%d\t",a[i]);
            else
                printf("素数有:%d\t",a[i]);
            printf("\n");
        }
    }

}

[ 本帖最后由 零距离98 于 2010-12-12 00:30 编辑 ]
搜索更多相关主题的帖子: 素数 筛选 
2010-12-11 19:34
五当家
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:2
帖 子:1112
专家分:3674
注 册:2010-10-20
得分:7 
唉,你自己写,如果真有错找不出来就把代码发上来让人帮你看看,你这样的作业帖人家是不会帮你写的.

经验积累中............
2010-12-11 20:37
ksws0191053
Rank: 2
等 级:论坛游民
帖 子:30
专家分:32
注 册:2010-12-3
得分:7 
是筛选法吧,我同意楼上的说法,给你讲讲思想吧。就是建立一个长度为101的数组s,将1到100与数组s的下标对应,作为挑选质数的对象。数组s相当于筛子,所有元素初始值为零。令s【0】和s【1】为1,将0和1排除在质数外。然后循环,下标从2到100递增,如果s【i】为0,则i为质数,然后将i的所有倍数下标对应的数组元素值改为1,简单的说就是,s【2】的值为0,所以2的倍数如4、6、8…一直循环到100,都不是质数,数组元素值改为1。循环结束后,输出数组元素值为0的下标,就是1到100的质数。一口气说了那么多,也不知道对你有没有帮助。
2010-12-11 20:53
qq312154421
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:124
专家分:120
注 册:2010-6-7
得分:7 
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "math.h"
void main()
{
     int n,x,g,k;
     k=0;
     g=0;
     printf("1到100之间的素数有:\n");
     for(x=1;x<=99;x++,x++)
     {
         g=sqrt(x);
         for(n=2;n<=g;n++)
         {
             if(x%n==0)
                 break;   
         }
         if(n>=g)
         {   
             printf("%-4d",x);
             k++;
         }
         if(k%10==0)
             printf("\n");
     }
        
}
不知道什么是选择法,随便做了一下。。

勤奋不止,自强不息。
2010-12-11 21:07
零距离98
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-12-9
得分:0 
谢谢楼上
#include<stdio.h>
#include<math.h>
void main()
{
    int i,m,a[100];
    for(i=0;i<100;i++)
        a[i]=i+1;
    if(i=4)printf("不是素数的有:\n");
    for(i=0;i<100;i++)
    {
        
        if(i>=1)
        {
            
        for(m=2;m<a[i];m++)
        {
            
            if(a[i]%m==0)
            {
            printf("%d\t",a[i]);
            break;
            }
            
        }
        }
    }
    printf("\n");
    if(i=2)printf("是素数的有:\n");
        for(i=0;i<100;i++)
    {
        
        if(i>=1)
        {
            
        for(m=2;m<a[i];m++)
        {
            if(a[i]%m==0)
            {
            break;
            }
            else if(m==a[i]-1)
                printf("%d\t",a[i]);
            else continue;
        }
        }
    }
        printf("\n");
}
2010-12-12 01:54
牧城雪
Rank: 1
等 级:新手上路
帖 子:33
专家分:9
注 册:2017-11-6
得分:0 
回复 4楼 qq312154421
可是您这个输出结果中有9啊,9不是素数。
2017-11-06 23:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-328717-1-1.html




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

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