| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1118 人关注过本帖
标题:初学者请教一个求质数的问题
只看楼主 加入收藏
ophuanghao
Rank: 1
等 级:新手上路
帖 子:18
专家分:1
注 册:2010-2-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:20 
初学者请教一个求质数的问题
#include <stdio.h>
main()
{
  int m=3,n;
   while (m<=100)
   {   
loop1:  n=2;    loop2:
     if (m%n==0)
         m=m+1;
     else n=n+1;
           if (n<m)  goto loop2;
           else printf("%d\n",m); m=m+1;goto loop1;
        
   }
   }


这个为何是死循环 M大于100的时候不跳出呢 谢谢大家
搜索更多相关主题的帖子: 质数 
2010-02-24 20:56
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:15 
1,代码格式太糟糕了,建议改进;

2, goto 不建议使用,它使代码的流畅性及可读性大打折扣;

3,求素数的程序有很多,这种方法不太好,效率也不高.


    以上只是一家之言,仅为参考.下面是我给你改正过后的程序,您对照一下就知道错在哪了.

#include <stdio.h>
main()
{
    int m=3,n;

    loop1:  n=2;
    while (m<100)
    {
        loop2:
        if (m%n==0)
            m=m+1;
        else
            n=n+1;
        if (n<m)
            goto loop2;
        else
            printf("%d\n",m);
        m=m+1;
        goto loop1;
    }
}
2010-02-24 21:04
ophuanghao
Rank: 1
等 级:新手上路
帖 子:18
专家分:1
注 册:2010-2-24
收藏
得分:0 
谢谢版大,五体投地~~呵呵~~初学者  以后还请各位老大多多指教
2010-02-24 21:14
幸运之星
Rank: 4
来 自:吉林
等 级:业余侠客
帖 子:275
专家分:239
注 册:2009-6-5
收藏
得分:3 
回复 楼主 ophuanghao
程序代码:
main()
{
int a;
for(;;)
{
scanf("%d",&a);
if((a+1)%6==0 || (a-1)%6==0) printf("%d shi zhi shu",a);
}
}

我现在给个程序 是错的 以前做过一个万能的现在忘了郁闷啊
谁能对这个求质数的程序有印象 就把代码发一下
我记得以前好像还有什么
这个是我现在只能想的这些 肯定缺点东西
2010-02-24 21:33
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:2 
满足 if 条件的,就有可能是,还得再测一下是不是素数。

(虽然我不是版主但还是回了,呵呵~~)


[ 本帖最后由 pangding 于 2010-2-24 22:12 编辑 ]
2010-02-24 22:09
幸运之星
Rank: 4
来 自:吉林
等 级:业余侠客
帖 子:275
专家分:239
注 册:2009-6-5
收藏
得分:0 
回复 5楼 pangding
真的不是这样的 我以前是看到了一个定理

好像是

一切对6x+1或6x-1 还有几个什么我忘了

这个是一个定理 还是数学家写的呢
晕啊现在找不到那骗关于素数论的文章了
2010-02-24 22:12
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
这好证:一个素数,除了2和3。只能 除6 余1或者5。

否则的话:
余2,那么可以写成 6k+2 = 2(3k+1)
余3,那么可以写成 6k+3 = 3(2k+1)
余4,那么可以写成 6k+4 = 2(3k+2)
当然被6整除也不行了。


数学家写的东西多了,不过也有不少是挺简单的~~
2010-02-24 22:21
幸运之星
Rank: 4
来 自:吉林
等 级:业余侠客
帖 子:275
专家分:239
注 册:2009-6-5
收藏
得分:0 
晕 啊 老兄 啊 你说的不对了吧 你把这个程序写出来
可不可以啊 嘿嘿 我先头可是试验了啊
2010-02-24 22:43
ophuanghao
Rank: 1
等 级:新手上路
帖 子:18
专家分:1
注 册:2010-2-24
收藏
得分:0 
6x+1或6x-1 但同时不能被5整除
2010-02-24 22:46
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
我说的哪不对?

至于程序我就不写了。在坛子里以素数或者质数为关键字搜一下有一大堆呢。前两天还看见一个帖子写素数的,有兴趣的去找找就行了。
2010-02-24 22:48
快速回复:初学者请教一个求质数的问题
数据加载中...
 
   



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

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