工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2299|回复: 8

C语言新人求助,谢谢

[复制链接]
发表于 2010-12-4 23:53 | 显示全部楼层 |阅读模式
题目:孪生素数是指两个相差为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-6 17:43 | 显示全部楼层
如果两个数都不是素数,返回值就是一样的了。
回复

使用道具 举报

发表于 2010-12-6 21:27 | 显示全部楼层
你把不是素数的作为输入,对程序进行调试下就知道了啊,如使用VC++6.0调试环境进行调试啊。
回复

使用道具 举报

头像被屏蔽
发表于 2010-12-6 21:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2010-12-9 22:05 | 显示全部楼层
如果两个数都不是素数,返回值就是一样的了。
iptton 发表于 2010-12-6 17:43


谢谢。明白。下面是我更正后的代码:
#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=1,l=2;j<=m;l++)              /*利用循环输出所需的对数*/
        if(prime(l+2)&&prime(l))           /*判断是否符合孪生对数的条件*/
        {
            printf("%d=%d+2\n",l+2,l);   /*输出结果*/
            j++;
        }
    getch();                                   /*WINTC需要这一个*/
    }
    int prime(int n)                        /*需要调用的函数*/
    {
    int i;                                    /*定义变量*/
    for(i=2;i<n;i++)            /*利用循环,找出指定范围内的素数*/
        {
        if(n%i==0) return 0;   /*如果不是素数则返回0*/

        if(i>=n) return 1;   /*如果是素数则返回1*/

        }
   }
回复

使用道具 举报

 楼主| 发表于 2010-12-9 22:11 | 显示全部楼层
好学滴人啊
pzy0428 发表于 2010-12-6 21:40


为了前途
回复

使用道具 举报

 楼主| 发表于 2010-12-9 22:11 | 显示全部楼层
好学滴人啊
pzy0428 发表于 2010-12-6 21:40


为了前途
回复

使用道具 举报

 楼主| 发表于 2010-12-10 09:21 | 显示全部楼层
你把不是素数的作为输入,对程序进行调试下就知道了啊,如使用VC++6.0调试环境进行调试啊。 ...
顺序号 发表于 2010-12-6 21:27



    调试功能不是很会用
回复

使用道具 举报

发表于 2010-12-13 19:49 | 显示全部楼层
这种问题完全有能力自己排除啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2024-4-27 16:22

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表