标题:回文素数的优化问题,希望把我这个算法尽可能的优化,输入一个整数n(2,100 ...
只看楼主
天衣boy
Rank: 1
来 自:中国河南
等 级:新手上路
帖 子:99
专家分:0
注 册:2016-10-20
结帖率:69.23%
 问题点数:0 回复次数:7 
回文素数的优化问题,希望把我这个算法尽可能的优化,输入一个整数n(2,1000000)输出n范围的回文素数
一号代码:
#include<iostream>
#include<string>
#include<math.h>
 
using namespace std;
int o(int n)
{
    int i;
if(n<2)
return 0;
else for(i=2;i<=n-1;++i)
if(n%i==0)return 0;
return 1;
 
}
int test(int num)
{
 
  long n=0;
    long count=0;
    count=num;
    do
    {
        n*=10;
        n+=num%10;
        num/=10;
    }
    while (num>0);
    if (count==n)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
int main()
{
    int n,count=0,i;
    cin>>n;
    for(i=1;i<=n;++i)
    {
    if(o(i)==1)
        if(test(i)==1)
        {
            cout<<i<<" ";
            count++;
            if(count%5==0)
            cout<<endl;
        }
    }
    return 0;
}


二号代码:
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
int main()
{
int m,n,i,t,x,h,b=0,N,z,count=0;
int a[7];
scanf("%d",&m);
for(i=1;i<=m;i++)
{
for(x=2;x<i;x++)
if(i%x==0)
break;
if(x==i)
{
    z=i;
    b=0;
    while(z)
    {
        a[b]=z%10;
        z=z/10;
        b++;
    }
    for (z=0;z<b;z++)
        if(a[z]!=a[b-1-z]) break;
    if(z==b)
     {
         count++;
           printf("%d ",i);
           if(count%5==0)
           cout<<endl;
           
}
}
}
}
搜索更多相关主题的帖子: include return count 
2017-05-09 21:02
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回文素数是指 123321 这样的吗

还是说  abc是素数 cba 也是素数 这样的

DO IT YOURSELF !
2017-05-10 08:52
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
你需要一个高效的求素数算法,比如筛选法

2017-05-10 08:56
天衣boy
Rank: 1
来 自:中国河南
等 级:新手上路
帖 子:99
专家分:0
注 册:2016-10-20
得分:0 
回复 2楼 wp231957
12321这样的

刚学习小半年   ,   努力成为专家
2017-05-30 16:44
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
1-n里面大概有(int)sqrt(n)个回文数~~
1-n里面看看素数的比例和n有关~
在1000000里面大概有几万个素数~1000个回文数左右(排除前导不能为0应该小于1000个)~用欧拉筛法判断素数需要的是o(n)的时间复杂度~判断一个回文数是也o(n)的时间复杂度~n的值和回文数大小有关~有两种思路~第一种是先判断回文数再判断素数~第二种是先判断素数再判断回文数~不过第一种方法需要找到快速递增生成回文数的方法~第二种则不用~所以感觉还是第二种方法效率比较高~

[此贴子已经被作者于2017-5-30 20:35编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-30 18:00
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 5楼 九转星河
不对哦~还是第一种方法效率比较高~因为回文数的个数比素数要小~找到快速递增生成回文数的方法就行了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-30 20:37
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:0 
回文数挺有趣的。

第一个回文数是 11,它的2次幂也是个回文数,3次幂也是,4次幂还是,5次就不是了,

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-31 11:44
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 7楼 renkejun1942
回文数和数字本来的结构有关~不同进制的回文数很可能是不同的~还得要老老实实遍历求解~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-31 12:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-476863-1-1.html




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

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