练习,回文、素数

来源:互联网 发布:新手编程 编辑:程序博客网 时间:2024/05/16 23:50
编制一个函数reverse,返回给定数据的“反序数”
#include <iostream>using namespace std;//自定义函数的原型(即函数声明)int reverse(int);int main(){    int m,n;    cin>>m;    n=reverse(m);    cout<<n<<endl;}int reverse(int x){    int r,m=0;    while(x>0)    {        r=x%10;        m=m*10+r;        x=x/10;    }    return m;}


编制isPalindrome(),用于判断参数是否是回文数——回文数,即从前往后读和从后往前读都一样的数,如1122121都是回文数,而1231123都不是回文数。

#include <iostream>using namespace std;//自定义函数的原型(即函数声明)bool isPalindrome(int);int main(){    int m;    cin>>m;    if(isPalindrome(m))        cout<<m<<"是回文数,噢耶!"<<endl;    else        cout<<m<<"不是回文数。回文有什么好!"<<endl;    return 0;}bool isPalindrome(int n){    int r,m,k=0;    m=n;    while(n>0)    {        r=n%10;        k=k*10+r;        n=n/10;    }    if(m==k)        return 1;    else        return 0;}

编制一个返回值为bool型的函数isPrimer(),用于判断参数是否为素数(是素数返回true,否则false
#include <iostream>#include<cmath>using namespace std;//自定义函数的原型(即函数声明)bool isPrimer(int);int main(){    int m;cout<<"输入一个数字,判断是否素数:";cin>>m;if(isPrimer(m))    cout<<"是素数!"<<endl;else     cout<<"不是素数!"<<endl;}bool isPrimer(int n){bool primer=1;int i,k;k=sqrt(n);for(i=2;i<=k;i++)    if(n%i==0)    primer=0;  return primer;}
别的写法
cout<<m<<((isPrime(m))?"是":"不是")<<"素数。"<<endl; 

编制main函数,调用上面定义的3个函数,完成

  • 输出1000以内的所有素数。
  • 输出1000以内的所有回文数。
  • 输出1000以内的所有回文素数。
  • 若一个素数的反序数仍为素数,则称它为可逆素数。求10000以内的所有可逆素数。
#include <iostream>#include<cmath>using namespace std;//自定义函数的原型(即函数声明)bool isPalindrome(int);bool isPrimer(int);int reverse(int);int main(){    int m;    cout<<"一、1000以内所有素数:"<<endl;    for(m=2; m<=1000; m++)        if(isPrimer(m))            cout<<m<<'\t';    cout<<endl<<endl;    cout<<"二、1000以内所有回文数:"<<endl;    for(m=2; m<=1000; m++)        if(isPalindrome(m))            cout<<m<<'\t';    cout<<endl<<endl;    cout<<"三、1000以内所有回文素数:"<<endl;    for(m=2; m<=1000; m++)        if(isPalindrome(m))            if(isPrimer(m))                cout<<m<<'\t';    cout<<endl<<endl;    cout<<"四、1000以内所有可逆素数:"<<endl;    for(m=2; m<=1000; m++)        if(isPrimer(m)&&isPrimer(reverse(m)))            cout<<m<<'\t';}bool isPrimer(int n){    bool primer=1;    int i,k;    k=sqrt(n);    for(i=2; i<=k; i++)        if(n%i==0)            primer=0;    return primer;}bool isPalindrome(int n){    bool Palindrome=0;    if (reverse(n)==n)        Palindrome=1;    return Palindrome;}int reverse(int x){    int r,m=0;    while(x>0)    {        r=x%10;        m=m*10+r;        x=x/10;    }    return m;}


0 0