1./*
2. * Copyright (c) 2014, 烟台大学计算机学院
3. * All rights reserved.
4. * 文件名称:test.cpp
5. * 作 者:刘畅
6. * 完成日期:2014年 11 月 7 日
7. * 版 本 号:v1.0
8. *
9. * 问题描述:。输出1000以内的所有素数、回文数、回文素数和10000以内的所有可逆素数;
10. * 输入描述: 分情况而定;
11. * 程序输出:输出该输出的数;
12. */
(1)输出1000以内所有素数;
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
bool primenumber(int );
int main()
{
int n,i=0;
for (n=2; n<1000; ++n)
{
if (primenumber(n))
{
cout<<n<<" ";
i++;
if (i%10==0)
cout<<endl;
}
}
return 0;
}
bool primenumber(int n)
{
int i;
for (i=2; i<=sqrt(n); ++i)
if (n%i==0)
break;
if (i>sqrt(n))
return n;
}
运行结果:
(2)输出1000以内的所有回文数;
#include <iostream>
using namespace std;
bool isPalindrome(int );
int main()
{
int m,n=0;
for (m=1;m<1000;++m)
{
if (isPalindrome(m))
{
cout<<m<<" ";
n++;
if (n%10==0)
cout<<endl;
}
}
return 0;
}
bool isPalindrome(int n)
{
int s=0,i,j=n;
while (j>0)
{
i=j%10;
s=s*10+i;
j=j/10;
}
return (s==n);
}
运行结果:
(3)输出1000以内的回文素数;
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
bool isPalindrome(int );
bool primenumber(int );
int main()
{
int n,i=0;
for (n=2;n<1000;++n)
{
if (isPalindrome(n)&&primenumber(n))
{
cout<<n<<" ";
i++;
if (i%10==0)
cout<<endl;
}
}
return 0;
}
bool primenumber(int n)
{
int i;
for (i=2;i<=sqrt(n);++i)
if (n%i==0)
break;
if (i>sqrt(n))
return n;
}
bool isPalindrome(int n)
{
int s=0,i,j=n;
while (j>0)
{
i=j%10;
s=s*10+i;
j=j/10;
}
return (s==n);
}
运行结果:
(4)若一个素数的反序数仍为素数,则称它为可逆素数。求10000以内的所有可逆素数;
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
bool primenumber(int );
int reverse(int );
int main()
{
int n,i=0,m;
for (n=2;n<10000;++n)
{
m=reverse(n);
if (primenumber(m)&&primenumber(n))
{
cout<<n<<" ";
i++;
if (i%10==0)
cout<<endl;
}
}
return 0;
}
bool primenumber(int n)
{
int i;
for (i=2;i<=sqrt(n);++i)
if (n%i==0)
break;
if (i>sqrt(n))
return n;
}
int reverse(int x)
{
int r,m=0;
while (x>0)
{
r=x%10;
m=m*10+r;
x=x/10;
}
return m;
}
运行结果:
知识点总结:
要想得出正确的结果,得处理好if中的条件,然后要保证运行界面的整洁,还要控制一行输出多少个数。
学习心得:
前面两个没啥难度,把for循环应用到之前的项目代码进去就可以搞定,但后两个做了好久,第三个不管怎么改输出的都还是1000以内的素数,最后在借鉴了老师的博文情况下找到了问题--要把两个判断放在一个if后面的括号里,如果不放,还得做出其他的改变,这里就不多说了;最后一个也是同样的问题,解决得还算比较顺利;然后在书上看到了控制一行输出数值的个数的方法,所以个人觉得做得算是比较好的了(即使感觉那些函数自己写得还是有些问题,嘿嘿!)