您的位置:首页 > 其它

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

2014-11-07 23:15 603 查看
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后面的括号里,如果不放,还得做出其他的改变,这里就不多说了;最后一个也是同样的问题,解决得还算比较顺利;然后在书上看到了控制一行输出数值的个数的方法,所以个人觉得做得算是比较好的了(即使感觉那些函数自己写得还是有些问题,嘿嘿!)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐