| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 801 人关注过本帖
标题:用筛选法选出100以内的素数,请问这样做,哪写错了
只看楼主 加入收藏
幸福最晴天
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-11-25
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:11 
用筛选法选出100以内的素数,请问这样做,哪写错了
#include <stdlib.h>

int main()
{
   int a[101],i,j,n=0;
   a[i]=i;
   for(j=2;j<=100;j++)
   {
       for(i=1;j<=100;i++)
       {
           if (a[i]%j==0)
           a[i]=0;
       }
   }
   for(i=1;i<=100;i++)
   {
       if(a[i]!=0)
       {
           printf("%d",a[i]);
           n++;
       }
       if(n%5==0)
       printf("\n");
   }
}
搜索更多相关主题的帖子: include 
2012-11-25 00:35
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
收藏
得分:1 
你的问题很多啊!头文件stdlib是要用随机函数是用的,
 for(j=2;j<=100;j++)
    {
        for(i=1;j<=100;i++)这里因该是i<=100吧
        {
            if (a[i]%j==0)
            a[i]=0;除了a[1],其余a[i]全为0了
        }
    }
还有其余的我就懒得说了,睡了!给你一个代码,不过不是用数组,如果需要,明天再说!#include<stdio.h>
#include<math.h>
void main()
{
    int i,j;
    bool flag=1;
    for(i=2;i<=100;i++)
    {
        for(j=2;j<=(int)sqrt(i);j++)
        {
            if(i%j==0)
            {flag=0;break;}
            else flag=1;
        }
        if(flag)
            printf("%d \n",i);
    }
}
            

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2012-11-25 01:22
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:2 
#include <stdio.h>
#include <math.h>
int is_primer(int num);
int main(void)
{
    int i;
    printf("The primer:\n");
   
    for(i=1;i<=100;i++)
    {
        if(is_primer(i)) printf("%d\t",i);
    }
    printf("\n");
   
   
    getch();
}
int is_primer(int num)
{
    int i;
    int flag = 1;
    for(i=2;i<=sqrt(num);i++)
    {
        if((num%i)==0)
        {
      
        flag = 0;
      
        break;
        }
    }
    return flag;
}


[ 本帖最后由 pauljames 于 2012-11-25 08:21 编辑 ]

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-11-25 08:20
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:1 
楼主a[i]=i;这句的目的是给数组赋值吧?但是没这样弄的,要用循环啊;
for(i=1;i<=100;i++)
a[i]=i;
这样。
for(i=1;j<=100;i++)这里死循环啊,
l另外补个stdio.h
头文件吧

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-25 08:36
幸福最晴天
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-11-25
收藏
得分:0 
回复 2楼 额外覆盖
你能不能在我写的基础上,帮我改一下,,使它可以运行啊、、、
2012-11-25 12:06
幸福最晴天
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-11-25
收藏
得分:0 
回复 4楼 yaobao
哦哦,,那个死循环该怎么改啊
2012-11-25 12:10
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
收藏
得分:15 
#include <stdio.h>
#include<math.h>
int main()
 {
    int a[99],i,k=2,j,n=0;
    for(i=0;i<=98;i++)
    {
        a[i]=k;//100个数中因为1不是素数,所以只需判断2~100即可,实际还可以只判断奇数
        k++;
    }
    for(i=0;i<=98;i++)
    {
        for(j=2;j<=(int)sqrt(a[i]);j++)//只要被2到它的平方根之间的任一个数整除,就可以判断它不是素数
        {
            if (a[i]%j==0)
            {
                a[i]=0;
                   break;
            }
        
        }
    }
    for(i=0;i<=98;i++)
    {
        if(a[i]!=0)
        {
            printf("%d ",a[i]);
            n++;
        }
        if(n%5==0)
        printf("\n");
    }
 }

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2012-11-25 13:05
w139700701
Rank: 1
等 级:新手上路
帖 子:17
专家分:4
注 册:2012-9-24
收藏
得分:1 
回复 楼主 幸福最晴天
给你一个吧
#include <stdio.h>

bool isprime(int x)
{
    int i;
    for (i=2;i<x;++i)
      {
         if(x%i==0)
           break;  
      }  
    if(i==x)
     return ture;
    else
     return false;
      
}
int main (void)
{
    int i;
    for (i=2;i<=100;++i)
     {
        if(isprime(i))
          printf("%d\n",i);
        else
          continue;
     }

}
2012-11-25 13:33
幸福最晴天
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2012-11-25
收藏
得分:0 
回复 7楼 额外覆盖
再问一下,如果我换一种思路来写这个程序,如只要是2的倍数都不是素数,3的倍数不是素数,4的倍数不是素数、、、、、、以此类推,,那这个程序该怎么改啊
2012-11-25 13:37
梦幻乐园
Rank: 2
等 级:论坛游民
帖 子:62
专家分:87
注 册:2012-10-25
收藏
得分:0 
#include<stdio.h>
int main(){
    int m,n;
    for(m=1;m<=100;++m){
       for(n=2;n*n<=m;++n)
           if(m%n==0)  return 0;
           printf("%d\n",m);
}
  return 0;
}
2012-11-25 13:53
快速回复:用筛选法选出100以内的素数,请问这样做,哪写错了
数据加载中...
 
   



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

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