| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 706 人关注过本帖
标题:这是求两个数之间的回文素数(两个数都大于5),但程序却不显示结果,没反应 ...
只看楼主 加入收藏
甘俊霖
Rank: 2
等 级:论坛游民
帖 子:20
专家分:41
注 册:2010-11-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
这是求两个数之间的回文素数(两个数都大于5),但程序却不显示结果,没反应,各位看一下到底哪错了?
#include <stdio.h>
#include <math.h>
main()
{
    int a,b,i,j=0,k,m,n;
    printf("please input two numbles:");
    scanf("%d%d",&a,&b);
    if(a<5||b<=a)
        printf("please input again");
    for(i=a;i<=b;i++)
    {
        m=i;
        while(i>0)
        {
            j=i%10+j*10;
            i=i/10;
        }
        if(m==j)
        {
            for(k=2;k<=sqrt(m);k++)
            {
                n=m%k;
                if(n==0)    goto end;
            }
            printf("%d",m);
        }
        end:k=0;
    }
}
搜索更多相关主题的帖子: 素数 回文 结果 
2010-11-30 22:11
甘俊霖
Rank: 2
等 级:论坛游民
帖 子:20
专家分:41
注 册:2010-11-21
收藏
得分:0 
大家帮帮忙吗?我想了好久也没想明白。不要没一个人回答。
2010-12-02 07:40
qiang1533
Rank: 2
等 级:论坛游民
帖 子:1
专家分:20
注 册:2010-12-2
收藏
得分:20 
#include <stdio.h>
#include <math.h>
#include <string.h>
int isPrime(int n)
{
     int i;
    for(i = 3; i*i <= n; i += 2)
        if(n%i == 0) return 0;
    return 1;
}
main(void)
{
    int a,b,i,j=0,k,m,n;
     char str[10];
    printf("please input two numbles:");
    scanf("%d%d",&a,&b);
    if(a<5||b<=a)
        printf("please input again");
    for(i=a;i<=b;i++)
          {

            m=i;
            sprintf(str,"%d",i);
            if(i%2==0)
            {
                continue;   
            }
            else if(i!=11&&strlen(str)%2==0)
            {
                continue;
            }
            else
            {
                if(!isPrime(i))
                {
                    continue;
                }
                else
                {
                    switch(strlen(str))
                       {
                        case 1:
                                j=i;
                            break;
                        case 3:
                                j=i/100+(i/10%10)*10+(i%10)*100;
                            break;
                        case 5:
                                j=i/10000+(i/1000%10)*10+(i/100%10)*100+(i/10%10)*1000+(i%10)*10000;
                            break;
                        default:
                            if(i==11)j=i;
                            break;
                    };
                }
                if(j==m)
                {
                    printf("%d\n",i);
                }
            }
            }
}
2010-12-02 10:35
suoluo2010
Rank: 1
等 级:新手上路
帖 子:6
专家分:2
注 册:2010-12-1
收藏
得分:0 
这个函数并没有再次输入的机会阿,再说m==j也不成立阿
2010-12-02 10:53
甘俊霖
Rank: 2
等 级:论坛游民
帖 子:20
专家分:41
注 册:2010-11-21
收藏
得分:0 
我用到这个程序,是对的,但我最想知道的是我的到底错哪了
2010-12-04 09:12
甘俊霖
Rank: 2
等 级:论坛游民
帖 子:20
专家分:41
注 册:2010-11-21
收藏
得分:0 
你这种方法是我以前用的,长而且运行慢,但可行
2010-12-04 09:14
快速回复:这是求两个数之间的回文素数(两个数都大于5),但程序却不显示结果, ...
数据加载中...
 
   



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

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