| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1252 人关注过本帖
标题:高手们 都来试一下吧 在一个求十亿以内回文素数的程序内 增加自定义范围功能 ...
只看楼主 加入收藏
面前的马甲
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-3-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
高手们 都来试一下吧 在一个求十亿以内回文素数的程序内 增加自定义范围功能
#include <stdio.h>
#include <math.h>

int prime_test( long x )
{
long sqx = (long)sqrt( x ) , t;
for( t = 3; t <= sqx ; t += 2 )
if( x % t == 0 )
return 0;
return 1;
}

int slove( long x , long * r )
{
long a = x / 10;

while( a > 10 )
{
x *= 10;
x += a % 10;
a /= 10;
}

if( a%2 == 0 || a == 5 )
return 0;

x = x * 10 + a;
if( prime_test( x ) )
return *r = x , 1;
return 0;
}

int main()
{
long i , r;
printf( "2\n3\n5\n7\n" );

for( i = 10; i < 100; ++i )
{
if( slove( i , &r ) )
printf( "%d\n" , r );
}

for( i = 100; i < 1000; ++i )
{
if( slove( i , &r ) )
printf( "%d\n" , r );
}

for( i = 1000; i < 10000; ++i )
{
if( slove( i , &r ) )
printf( "%d\n" , r );
}

for( i = 10000; i < 100000; ++i )
{
if( slove( i , &r ) )
printf( "%d\n" , r );
}

return 0;
}


以上为我的代码 希望大侠们能把它改成求任意范围内回文素数的程序。。。。。
搜索更多相关主题的帖子: return long 
2011-03-17 22:16
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:7 
学习。。
收到的鲜花
2011-03-17 22:17
pcbaichi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:486
专家分:1185
注 册:2010-11-13
收藏
得分:7 
超过十亿你行不

免费赠送河蟹一只
2011-03-17 22:24
面前的马甲
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-3-15
收藏
得分:0 
沙发  高手快来帮忙啊
2011-03-17 22:26
面前的马甲
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-3-15
收藏
得分:0 
回复 3楼 pcbaichi
没太明白你的意思    十亿已经很大了
2011-03-17 22:28
面前的马甲
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-3-15
收藏
得分:0 
回复 2楼 刘定邦
刚刚学习了不长时间 问题不少啊  这个我已经想了两天了  改了几次  没成  主要是要把时间限制在十秒以内
2011-03-17 22:30
面前的马甲
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-3-15
收藏
得分:0 
回复 3楼 pcbaichi
还在么  请您指教
2011-03-17 22:48
pcbaichi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:486
专家分:1185
注 册:2010-11-13
收藏
得分:0 
回复 7楼 面前的马甲
一句话,C语言的字符具有数字的特性,考虑使用字符串

免费赠送河蟹一只
2011-03-17 22:55
面前的马甲
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2011-3-15
收藏
得分:0 
自己改的。。。。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    long int t,a,b; //定义最后输出的结果t、筛选范围等
    int i,j,k,l,m,n,x,flag = 1,d[3]; //定义筛选回文素数所需的计数器、100内回文素数数组等
    scanf("%ld%ld", &a,&b); //将输入的两个整数按顺序作为输出结果的下限、上限
    d[0] = 5; //由于100内回文素数非常少,因此直接将它们定义到数组中以减少代码量与运算量
    d[1] = 7;
    d[2] = 11;
    for (i = 0; i < 3; i++) //对100内回文素数是否符合所给的范围进行判定
        {
            if ((a <= d[i]) && (d[i] <= b)) printf("%d\n",d[i]);
        }
    for (i = 1; i <= 9; i++) //筛选出三位回文素数并对是否符合所给的范围进行判定
    for (j = 0; j <= 9; j++)
       {
        flag = 1;
        t = i*101 + j*10;
        n = sqrt(t);

        for (x = 2; x <= n && flag; x++)

        {
            if(t%x == 0) flag = 0;
        }

        if(t < a || t > b) flag = 0;

        if(flag)
        printf("%ld\n", t);
       }
    for (i=1; i <= 9; i++) //筛选出五位回文素数并对是否符合所给的范围进行判定
    for (j=0; j <= 9; j++)
    for (k=0; k <= 9; k++)
        {
        flag = 1;
        t = i*10001 + j*1010 + k*100;
        n = sqrt(t);

        for (x = 2; x <= n && flag; x++)

        {
            if(t%x == 0) flag = 0;
        }

        if(t < a || t > b) flag = 0;

        if(flag)
        printf("%ld\n", t);
        }
    for (i = 1; i <=9 ; i++) //筛选出七位回文素数并对是否符合所给的范围进行判定
    for (j = 0; j <=9 ; j++)
    for (k = 0; k <=9 ; k++)
    for (l = 0; l <= 9; l++)
        {
        flag = 1;
        t = i*1000001 + j*100010 + k*10100 + l*1000;
        n = sqrt(t);

        for (x = 2; x <= n && flag; x++)

        {
            if(t%x == 0) flag = 0;
        }

        if(t < a || t > b) flag = 0;

        if(flag)
        printf("%ld\n", t);
        }
    for (i = 1; i <= 9; i++) //筛选出九位回文素数并对是否符合所给的范围进行判定
    for (j = 0; j <= 9; j++)
    for (k = 0; k <= 9; k++)
    for (l = 0; l <= 9; l++)
    for (m = 0; m <= 9; m++)
        {
        flag = 1;
        t = i*100000001 + j*10000010 + k*1000100 + l*101000 + m*10000;
        n = sqrt(t);

        for (x = 2; x <= n && flag; x++)

        {
            if(t%x == 0) flag = 0;
        }

        if(t < a || t > b) flag = 0;

        if(flag)
        printf("%ld\n",t);
        }
        return (0);
}
2011-03-18 16:37
快速回复:高手们 都来试一下吧 在一个求十亿以内回文素数的程序内 增加自定义范 ...
数据加载中...
 
   



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

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