上机内容:输出10000以内的所有可逆素数。若一个素数的反序数仍为素数,则称为可逆素数。
上机目的:控制结构综合
我的程序:
运行结果:
上机目的:控制结构综合
我的程序:
/*
* 程序的版权和版本声明部分:
* Copyright (c) 2013, 青岛农业大学理信学院
* All rights reserved.
* 文件名称:万以内的所有可逆素数.cpp
* 作 者:幻影行者
* 完成日期:2013 年 7 月 29 日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:
* 输入描述:无
* 问题描述:输出10000以内的所有可逆素数。若一个素数的反序数仍为素数,则称为可逆素数。
* 程序输出:略
* 问题分析:先判断是否素数再判断是否可逆
* 算法设计:略
*/
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int i,j,count=1; //count计算可逆素数的个数,初值为1,因为后文先输入了“2”这个特殊的数
bool prime; //标志是否素数
cout<<2<<"\t";
for(i=3;i<=10000;++i)
{
prime=true;
for(j=2;j<=sqrt(i);++j) //先判断是否素数
{
if(i%j==0)
{
prime=false;
break;
}
}
if(prime)
{
int t=i;
int m=0;
while(t>0)
{
m=m*10+t%10;
t=t/10;
}
bool prime_ni=true; //标志是否可逆
for(int k=2;k<=sqrt(m);++k) //后判断是否可逆
{
if(m%k==0)
{
prime_ni=false;
break;
}
}
if(prime_ni)
{
++count;
cout<<i<<"\t";
if(count%10==0)
{
cout<<endl;
}
}
}
}
cout<<"\n一共"<<count<<"个可逆素数"<<endl;
return 0;
}
运行结果: