| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:  注册  忘记密码
 
密 码:  
共有 4510 人关注过本帖
标题:求助,孪生素数问题
只看楼主 加入收藏
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
求助,孪生素数问题
题目:孪生素数是指两个相差为2 的素数。例如3 和5,5 和7,11 和13 等。编写程序输出m 对(m 由键盘输入)孪生素数。要求设计函数prime 用于判断某整数是否素数。


下面是我编的代码:



#include"stdio.h"
#include"math.h"
    main()
    {
    int m,j,l,n;                 /*定义变量*/
    int prime(int n);         /*函数的声明*/
    printf("Please input the numbers:");   /*提示输入*/
    scanf("%d",&m);                              
    for(j=0,l=2;j<=m;j++,l++)              /*利用循环输出所需的对数*/
        if(prime(l+2)==prime(l)+2)           /*判断是否符合孪生对数的条件*/
        {
            printf("%d=%d+2\n",l+2,l);   /*输出结果*/
        }
    getch();                                   /*WINTC需要这一个*/
    }
    int prime(int n)                        /*需要调用的函数*/
    {
    int k,i;                                    /*定义变量*/
    for(;n<=100000;n++)             /*利用循环,找出指定范围内的素数*/
        {
        if(n!=2&&n%2==0)continue;  /*排队除2以外的偶数*/
        k=sqrt(n);
        for(i=2;i<k;i++)
            if(n%i==0)break;
        if(i>=k)  return(n);              /*如果N是素数,即返回N的值*/
        }
   }
  

可是我的这一段代码输出的结果中包含不是素数的,不知道问题出在哪。
请问各位前辈,我这一段代码问题出在哪?谢谢

搜索更多相关主题的帖子: 孪生素数 
2010-12-03 23:53
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:9 
回复 楼主 折翼
可能是判断素数的函数有问题
这个给你参考一下
程序代码:
//判断一个数是否是素数。是返回1,否则返回0

int prime(int n)
{
    int i;
    for(i = 2;i < n;i++)
    {
        if(n % i == 0)
        {
            return 0;
        }
       
    }

    return 1;
   
}



[ 本帖最后由 南国利剑 于 2010-12-4 00:27 编辑 ]

南国利剑
2010-12-04 00:14
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:0 
这个貌似不能解决问题
2010-12-04 12:11
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:0 
没有其他前辈帮忙看一下吗?
2010-12-04 22:19
pragma
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2010-12-4
收藏
得分:2 
prime函数写错了,我感觉lz思路一点也不清晰,prime俩面无缘无故的加循环,没有学过筛法计算素数吗?
2010-12-04 22:38
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:0 
以下是引用pragma在2010-12-4 22:38:49的发言:

prime函数写错了,我感觉lz思路一点也不清晰,prime俩面无缘无故的加循环,没有学过筛法计算素数吗?
prime函数哪里出问题了?
2010-12-04 23:42
海豚小默
Rank: 2
等 级:论坛游民
帖 子:4
专家分:12
注 册:2010-12-4
收藏
得分:9 
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,j,k;
    int m;
    int count,count2;
    printf("请输入你要选择的范围\n");
    scanf("%d",&m);

    for(i=1;i<m;i++)
    {
        count=0;
        count2=0;
        for(j=1;j<m;j++)
        {
            for(k=1;k<m;k++)
            {
                if(i==j*k)
                    count++;
                if((i+2)==j*k)
                    count2++;
            }
        }
        if(count==2&&count2==2)
            printf("%d %d\n",i,i+2);
    }

}
2010-12-05 10:45
快速回复:求助,孪生素数问题
 
   



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

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