| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 687 人关注过本帖
标题:初学求助- -我写的素数,不对啊!!!
只看楼主 加入收藏
skyn
Rank: 2
来 自:西南交通大学
等 级:论坛游民
帖 子:24
专家分:32
注 册:2011-10-17
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:9 
初学求助- -我写的素数,不对啊!!!
哎。刚刚接触C语言。自己写了个素数的。第一次写的是100以内的,那个弄好了。后来写全部的,但是弄不好。求教育。。。求指导。。。
程序代码:
#include <stdio.h>
#include <math.h>

int main()
{
    int i,j,a,b;
    scanf("%d",&a);
    for(i=2;i<=a;i++)
    {
     for(j=2;j<=sqrt(i);j++)
     {
      b=i%j;
     
     }
     if(b==0)
      {
     
       printf("%d\t",i);
       }
     }
}
搜索更多相关主题的帖子: C语言 教育 
2011-10-17 17:10
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:7 
程序代码:
#include <stdio.h>
#include <math.h>
int main()
{
    int i,j,a,b=1;//b=1,为了保证2
    int s;
    scanf("%d",&a);
    for(i=2;i<=a;i++)
    {
        s=(int)sqrt(i);
        for(j=2;j<=s;j++)
        {
            b=i%j;
            if(b==0)break;   
        }
        if(b!=0)
        {
            printf("%d\t",i);
        }
    }
    return 0;
}
你判断是否素数的方法错了。。。
2011-10-17 17:38
skyn
Rank: 2
来 自:西南交通大学
等 级:论坛游民
帖 子:24
专家分:32
注 册:2011-10-17
收藏
得分:0 
回复 2楼 laznrbfe
那要怎么判断呢- -

﹎'ひS.т.й.R.S.に`"
2011-10-17 17:43
skyn
Rank: 2
来 自:西南交通大学
等 级:论坛游民
帖 子:24
专家分:32
注 册:2011-10-17
收藏
得分:0 
回复 2楼 laznrbfe
哦。。。我再看看你的那个

﹎'ひS.т.й.R.S.に`"
2011-10-17 17:45
唯我独魔
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:176
专家分:782
注 册:2011-4-13
收藏
得分:7 
#include <stdio.h>
#include <math.h>
int main()
{
    int i,j,a,b;
    scanf("%d",&a);
    for(i=2;i<=a;i++)
    {
        for(j=2;j<=sqrt(i);j++)
        {
            b=i%j;
            if(b==0)
                break;
        }
        if(j>(sqrt(i)))
            printf("%d\t",i);
    }
}
2011-10-17 17:45
skyn
Rank: 2
来 自:西南交通大学
等 级:论坛游民
帖 子:24
专家分:32
注 册:2011-10-17
收藏
得分:0 
回复 2楼 laznrbfe
我看了你改的后,又自己改了一下。发现就好了。不过还是有个问题,
程序代码:
#include <stdio.h>
#include <math.h>

int main()
{
    int i,j,a,b;
    scanf("%d",&a);
    for(i=2;i<=a;i++)
    {
     for(j=2;j<=sqrt(i);j++)
     {
      b=i%j;
     if(b==0)///为什么一定要加这个break?
     {
         break;
         }
     }
     if(b!=0)//刚刚我不小心打错了,是!=。打成==了。。
      {
    
       printf("%d\t",i);
       }
     }
}

﹎'ひS.т.й.R.S.に`"
2011-10-17 17:50
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:0 
回复 6楼 skyn
break;因为能整除一个除1和本身外的数就说明它不是素数。

[ 本帖最后由 laznrbfe 于 2011-10-17 18:19 编辑 ]
2011-10-17 18:04
落叶深蓝色
Rank: 8Rank: 8
来 自:山东
等 级:蝙蝠侠
帖 子:319
专家分:807
注 册:2010-12-8
收藏
得分:7 
程序代码:
int is_prime(int n)
{
    for (int i=2;i*i<=n;i++)
        if (n%i==0)
            return 0;
    return 1;
}
2011-10-17 18:34
skyn
Rank: 2
来 自:西南交通大学
等 级:论坛游民
帖 子:24
专家分:32
注 册:2011-10-17
收藏
得分:0 
回复 6楼 skyn
其实我想问的是,为什么加了就对了。不过还是谢谢啊。以后注严谨问题应该不会类似错误了

﹎'ひS.т.й.R.S.に`"
2011-10-17 19:08
远方的海
Rank: 1
等 级:新手上路
帖 子:18
专家分:6
注 册:2011-11-11
收藏
得分:0 
回复 5楼 唯我独魔
我想问一下,上面不是写for(j=2;j<sqrt(i);j++),下面怎么又写if(j>sqrt(i))  我想问的是计算机是怎么实现的?既然j<sqrt(i),下面怎么可能会有j>sqrt(i),请大侠赐教。
2011-12-28 19:30
快速回复:初学求助- -我写的素数,不对啊!!!
数据加载中...
 
   



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

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