第11周项目6-回文、素数 输出1000以内的所有素数、回文数、回文素数和10000以内的所有可逆素数

来源:互联网 发布:电影消除人声软件 编辑:程序博客网 时间:2024/05/18 04:56

1./*2. * Copyright (c) 2014, 烟台大学计算机学院3. * All rights reserved.4. * 文件名称:test.cpp5. * 作    者:刘畅6. * 完成日期:2014年 11 月 7 日7. * 版 本 号:v1.08. *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后面的括号里,如果不放,还得做出其他的改变,这里就不多说了;最后一个也是同样的问题,解决得还算比较顺利;然后在书上看到了控制一行输出数值的个数的方法,所以个人觉得做得算是比较好的了(即使感觉那些函数自己写得还是有些问题,嘿嘿!)

2 0