广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 5872 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
0937711311 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x11
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[学习] SOS!!!!!双生质数( C 语 言)
若N是质数,且N+2也是质数,则称为【双生质数】。
请写一C程式,输入a b两数字,输出a、b之间的双生质数,直到输入-1为止。

每组双生质数,以tab隔开。
范围内的双生质数,彼此换行列印。
若该范围无双生质数,则输出"此范围内无双生质数"。
不同范围内的结果,以10个"="符号隔开。

请注意! a大于等于2,且a不一定小于b。

输入范例:
2 50
100 80
-1

输出范例:
3     5
5     7
11     13
17     19
29     31
41     43
==========
此范围内无双生质数
==========



献花 x0 回到顶端 [楼 主] From:台湾 | Posted:2007-05-30 22:23 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

复制程式
#include <stdio.h>
#include <math.h>

int prime(int input)
{
    int x;
    int result;
    int loop;

    x = (int)sqrt((double)input);
    result = 1;

    for (loop = 3; loop <= x; loop += 2)
    {
        if (input % loop == 0)
        {result = 0;}
    }

    if (result == 1)
    {return 1;}
    else
    {return 0;}
}

int main(void)
{
    int a;
    int b;
    int loop;
    int result;

    while (scanf("%d", &a) == 1)
    {
        if (a == -1)
        {return 0;}
        else
        {scanf("%d", &b);}

        if (a < 2)
        {
            printf("==========\n请注意! a大于等于2,且a不一定小于b。\n==========\n");
            return 0;
        }

        if (a > b)
        {
            a = a + b;
            b = a - b;
            a = a - b;
        }

        result = 1;

        while (!(a & 1))
        {a = a + 1;}

        for (loop = a; loop < b; loop += 2)
        {
            if (prime(loop))
            {
                if (prime(loop + 2))
                {
                    printf("%d\t%d\n", loop, loop +  2);
                    result = 0;
                }
            }
        }

        if (result)
        {printf("==========\n此范围内无双生质数\n==========\n");}
    }

    return 0;
}



[ 此文章被ety在2007-06-01 14:25重新编辑 ]


献花 x0 回到顶端 [1 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-01 14:13 |
0937711311 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x11
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

真是太感谢~大大~~~~~了~感动~我去试试看


献花 x0 回到顶端 [2 楼] From:台湾固网公司 | Posted:2007-06-01 22:10 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

十个等号我放的位置不符你们老师的说明哟,
记得要修改!


献花 x0 回到顶端 [3 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-02 04:41 |
0937711311 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x11
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

可以帮我加上注解吗


献花 x0 回到顶端 [4 楼] From:台湾 | Posted:2007-06-03 21:37 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

全部是不可能的...

不过, 你可以告诉我哪几行你看不懂, 我可以解释!


献花 x0 回到顶端 [5 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-03 21:50 |
0937711311 手机
个人头像
个人文章 个人相簿 个人日记 个人地图
小人物
级别: 小人物 该用户目前不上站
推文 x0 鲜花 x11
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

loopg是变数吗


献花 x0 回到顶端 [6 楼] From:台湾 | Posted:2007-06-03 22:15 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

是的, 它是一个 int 型态的变数!


献花 x0 回到顶端 [7 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-03 22:24 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

花了点时间改写并且加了注解, 若还是连看都看不懂, 我认为你该被当。
我直接给你答案, 老实说这跟作弊没两样了。

表情


复制程式
#include <stdio.h>
#include <math.h> // 因为有用到 sqrt(),所以才宣告。

int p(int i) // 此为判断是否为质数之副程式,若输入值为质数便回传 1,否则回传 0。
{
    int x = (int)sqrt((double)i), r = 1, l; // 对'输入质i'开根号,然后储存于'变数x'。

    for (l = 3; l <= x; l += 2)
    {if (i % l == 0) r = 0;}

    return r;
}

int q(int a, int b) // a 是'输入值a',b 是'输入值b'。
{
    int r = 1, l; // r 是运算结果,若输入值ab区间有双生质数便设为 0 ,否则为 1 ,l 是’回圈计数变数’。

    if (!(a & 1)) a += 1; // 以及闸来作逻辑判断,若'输入值a'是偶数就加 1 ,使其变为奇数。

    for (l = a; l < b; l += 2) // 单纯只考虑奇数(因为除了 2 不可能有质数同时为偶数的情况),故回圈每次不只加 1 而是加 2。
    {
        if (p(l)) // 呼叫'副程式p'来判断’回圈计数变数’是否为质数。
        {
          if (p(l + 2)) // 若’回圈计数变数’是质数便再呼叫'副程式p'来判断’回圈计数变数’ + 2 是否也为质数。
          {
            printf("%d\t%d\n", l, l + 2); // 输出双生质数。
            r = 0;
          }
        }
    }
    r ? printf("此范围内无双生质数\n==========\n") : printf("==========\n"); // 若输入值ab区间无双生质数便输出'此范围内无双生质数=========='的讯息,否则只输出'=========='的讯息。
}

int main(void)
{
    int a, b, l; // a 是'输入值a',b 是'输入值b',l 是回圈计数变数。

    while (scanf("%d", &a) == 1) // 读取键盘输入的数值并储存为'输入值a'。
    {
        if (a == -1) return 0; // 若'输入值a'是 -1 便结束此程式。
        scanf("%d", &b); // 读取键盘输入的数值并储存为'输入值b'。
        a < 2 ? printf("请注意! a一定要大于或等于2。\n==========") : a < b ? q(a, b) : q(b, a); // 若'输入值a'小于 2 便输出错误讯息,否则就将'输入值a'与'输入值b'交由'副程式q'来处理。
    }

  return 0;
}



献花 x1 回到顶端 [8 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-03 22:51 |
ety 手机
数位造型
个人文章 个人相簿 个人日记 个人地图
初露锋芒
级别: 初露锋芒 该用户目前不上站
推文 x0 鲜花 x719
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

对了, 程式了我有用到 ? : 这种写法, 跟 if else 是一样的!

例如:

if (a == b)
{........}
else
{........}

跟下面这是一样的:

a == b ? .......... : ..........


献花 x0 回到顶端 [9 楼] From:台湾和信超媒体宽带网 | Posted:2007-06-03 22:59 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.122673 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言