第11周项目6-回文、素数 输出1000以内的所有素数、回文数、回文素数和10000以内的所有可逆素数(多文件组织程序)

  1. 1./* 
  2. 2. * Copyright (c) 2014, 烟台大学计算机学院 
  3. 3. * All rights reserved. 
  4. 4. * 文件名称:test.cpp 
  5. 5. * 作    者:刘畅 
  6. 6. * 完成日期:2014年 11 月 10 日 
  7. 7. * 版 本 号:v1.0 
  8. 8. * 
  9. 9. * 问题描述:。输出1000以内的所有素数、回文数、回文素数和10000以内的所有可逆素数; 
  10. 10. * 输入描述: 分情况而定; 
  11. 11. * 程序输出:输出该输出的数; 
  12. 12.  */  
  13. //main.cpp
    #include <iostream>
    using namespace std;
    bool primenumber(int );
    bool isPalindrome(int );
    int reverse(int );
    int main()
    {
        int m,n,i=0;
        cout<<"输出1000以内的素数:"<<endl;
        for (n=2; n<1000; ++n)
        {
            if (primenumber(n))
               {
                   cout<<n<<" ";
                   i++;
                   if (i%10==0)
                    cout<<endl;
               }
        }
        cout<<endl;
        cout<<"输出1000以内的回文数:"<<endl;
        for (n=1,i=0;n<1000;++n)
        {
            if (isPalindrome(n))
            {
                cout<<n<<" ";
                i++;
                if (i%10==0)
                    cout<<endl;
            }
        }
        cout<<endl;
        cout<<"输出1000以内的回文素数:"<<endl;
        for (n=2,i=0;n<1000;++n)
        {
            if (isPalindrome(n)&&primenumber(n))
                {
                    cout<<n<<" ";
                    i++;
                    if (i%10==0)
                    cout<<endl;
                }
        }
        cout<<endl;
        cout<<"输出10000以内的可逆素数:"<<endl;
        for (n=2,i=0;n<10000;++n)
        {
            m=reverse(n);
            if (primenumber(m)&&primenumber(n))
                {
    
                    cout<<n<<" ";
                    i++;
                    if (i%10==0)
                        cout<<endl;
                }
        }
        return 0;
    }

    //fun.cpp
    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);
    }
    
    int reverse(int x)
    {
        int r,m=0;
        while (x>0)
        {
            r=x%10;
            m=m*10+r;
            x=x/10;
        }
        return m;
    }

  14.  
  15.  
  16.  
  17.  
  18. 运行结果:
  19.  
  20.  
  21. 知识点总结:
  22. 多文件组织程序果然很强大,将主函数和其他函数分开,再也不用担心搞混了。
  23.  
  24. 学习心得:
  25. 上传图像还有大小限制,这次的图又很大,处理了几次都没搞好,只好让不全的图发上来了,不过还是有代码在前面的。
  26. 自己在编写的时候出了问题,在其他函数的界面内sqrt是不能被读取的,必须要在这个界面内加上#include <cmath>。。。

你可能感兴趣的:(编程,C++,namespace,源代码,iostream)