| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3423 人关注过本帖
标题:大神们,帮我看一下吧,我编了很久,实在不行,谢谢!找出两个正整数m和n之 ...
只看楼主 加入收藏
逸浪1
Rank: 2
来 自:重庆
等 级:论坛游民
帖 子:19
专家分:24
注 册:2013-11-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
大神们,帮我看一下吧,我编了很久,实在不行,谢谢!找出两个正整数m和n之间所有的绝对素数(1000以内),绝对素数是指一个素数的反序数也是素数,比如13是素数,
#include"stdio.h"
void bnumber(int m,int n,int num[]);
void shushu(int num[],int bnum[],int n);
void main()
{
    int m,n,num[1222],bnum[1222],w,a,b,sum=0,i,x,y;
    printf("输入m,n\n");
    scanf("%d %d",&m,&n);
    w=m;
    for(m,i=0;m<=n;i++,m++)
    {
        num[i]=m;
    }
    bnumber(w,n,num);
    shushu(num,bnum,m-n+1);
   
   
}
void bnumber(int m,int n,int num[])
{
    int j,bnum[1222];
    for(j=0;j<n-m+1;j++)
    {
        if(num[j]<10&&num[j]>=0)
            bnum[j]=num[j];
        else if(num[j]>=10&&num[j]<100)
            bnum[j]=num[j]/10+(num[j]%10)*10;
        else
            bnum[j]=num[j]/100+((num[j]%100)/10)*10+(num[j]%10)*100;
    }
}
void shushu(int num[],int bnum[],int n)
{
    int i,j,u;
    for(i=0;i<n;i++)
    {
        for(j=2;j<num[i];j++)
        {
            if(num[i]%j==0)
                break;
        }
        for(u=2;u<bnum[i];u++)
        {
            if(bnum[i]%j==0)
                break;
        }
        if(j==num[n]&&u==bnum[n])
            printf("%d",num[n]);
    }
}

[ 本帖最后由 逸浪1 于 2013-12-17 13:31 编辑 ]
搜索更多相关主题的帖子: include 正整数 
2013-12-17 13:29
逸浪1
Rank: 2
来 自:重庆
等 级:论坛游民
帖 子:19
专家分:24
注 册:2013-11-2
收藏
得分:0 
补充:找出两个正整数m和n之间所有的绝对素数(1000以内)绝对素数是指一个素数的反序数也是素数,比如13是素数,31也是素数,所以13是绝对素数
2013-12-17 13:30
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:10 
代码我就不看了,你的算法太复杂了, 应该先求出一个数是否是素数, 再求它的反序数是否是素数
你先求反序数,再计算两个数是否是素数, 要多计算很多数. 而且用不到数组.
程序代码:
#include<stdio.h>
#include <math.h>

#define SWAP(a, b, t) t = (a), (a) = (b), (b) = (t);  // 交换两个数的位置

int foo1(int m);          // 计算素数  , 是返回1, 否返回0
int foo2(int m);          // 计算反序数, 是返回1, 否返回0

int main()
{
    int m, n, x;
    int t;

    scanf("%d%d", &m, &n);
    if (m > n)             // 如果第一个数大于第二个数,就交换位置 没有做<1000的判断, 需要可以加上去.
        SWAP (m, n, t);

    for (x = m; x <= n; x++)
        if (foo1(x))       // 1. 计算x是否是素数
            if (foo2(x))   // 2. 计算反序数是否是素数
            printf("%d\n", x);
    return 0;
}

int foo1(int m)
{
    int i;
    for (i = 2; i <= sqrt(m); i++)
        if (m % i == 0)
            return 0;
    return 1;
}

int foo2(int m)
{
    int x = 0, t = 0;

    while(m) {         // 求反序数
        x = m % 10;
        t = t * 10 + x;
        m = m / 10;
    }
    if (foo1(t))      // 计算反序数是否是素数.
        return 1;
    return 0;
}
2013-12-17 14:25
ljx小子
Rank: 8Rank: 8
来 自:星星
等 级:蝙蝠侠
威 望:2
帖 子:222
专家分:916
注 册:2013-10-7
收藏
得分:10 
程序代码:
#include"stdio.h"
void bnumber(int m,int n,int num[]);
void shushu(int num[],int bnum[],int n);
int bnum[1225];
void main()
{
    int m,n,num[1222],w,a,b,sum=0,i,x,y;
    printf("输入m,n\n");
    scanf("%d%d",&m,&n);//
    w=m;
    for(i=0;m<=n;i++,m++)//此处把那个m去掉了,没用在这
    {
        num[i]=m;
    }
    bnumber(w,n,num);
    shushu(num,bnum,n-w+1);//不是m-n+1,数组的个数是n-w+1
    
    
}
void bnumber(int m,int n,int num[])
{
    int j;
    for(j=0;j<n-m+1;j++)
    {
        if(num[j]<10&&num[j]>=0)
            bnum[j]=num[j];
        else if(num[j]>=10&&num[j]<100)
            bnum[j]=num[j]/10+(num[j]%10)*10;
        else
            bnum[j]=num[j]/100+((num[j]%100)/10)*10+(num[j]%10)*100;
    }
}
void shushu(int num[],int bnum[],int n)
{
    int i,j,u;
    for(i=0;i<n;i++)
    {
        for(j=2;j<num[i];j++)
        {
            if(num[i]%j==0)
                break;
        }
        for(u=2;u<bnum[i];u++)
        {
            if(bnum[i]%u==0)//粗心的错误哦
                break;
        }
        if(j==num[i]&&u==bnum[i]&&num[j]>10)//判断条件应该是每个数都判断
            printf("%d ",num[i]);
    }
}
图片附件: 游客没有浏览图片的权限,请 登录注册

。。。。。。。。。。。
2013-12-17 16:50
ljx小子
Rank: 8Rank: 8
来 自:星星
等 级:蝙蝠侠
威 望:2
帖 子:222
专家分:916
注 册:2013-10-7
收藏
得分:0 
都是一些小错误,细心点就ok。。

。。。。。。。。。。。
2013-12-17 16:51
逸浪1
Rank: 2
来 自:重庆
等 级:论坛游民
帖 子:19
专家分:24
注 册:2013-11-2
收藏
得分:0 
谢谢大家啊!非常感谢!
2013-12-17 20:02
快速回复:大神们,帮我看一下吧,我编了很久,实在不行,谢谢!找出两个正整数m ...
数据加载中...
 
   



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

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