C++回文數及素數問題計算方法
更新時間:2016年05月30日 11:26:12 作者:賓賓琪琪
這篇文章主要介紹了C++回文數及素數問題計算方法,可實現一定范圍內的素數與回文數運算功能,涉及C++字符串遍歷與數字數學運算的相關技巧,需要的朋友可以參考下
本文實例講述了C++回文數及素數問題計算方法。分享給大家供大家參考,具體如下:
/*
* 作 者: 劉同賓
* 完成日期:2012 年 11 月 16 日
* 版 本 號:v1.0
*
* 輸入描述: 編制一個返回值為bool型的函數isPrimer(),用于判斷參數是否為素數,isPalindrome()用于判斷參數是否是回文數,調用函數回答以下問題(可以分別編制幾個程序完成,也可以在一個main()函數中完成,輸出時,用明顯的提示語,說明正在完成哪個任務。)
(1)輸出10000以內的所有素數。
(2)輸出10000以內的所有回文數。
(3)輸出10000以內的所有回文素數。
* 問題描述:
* 程序輸出:
* 問題分析:略
* 算法設計:略
*/
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int fanxushu(int i); //函數聲明
bool ispalindrome(int i);
bool isprimer(int i);
int main()
{
int a;
cout<<"輸出10000以內的所有素數:"<<endl;
for(a=2;a<=10000;++a)
{
if(isprimer(a))
{
cout<<a<<" ";
}
}
cout<<endl<<endl;
cout<<"輸出10000以內的所有回文數:"<<endl;
for(a=2;a<=10000;++a)
{
if(ispalindrome(a))
{
cout<<a<<" ";
}
}
cout<<endl<<endl;
cout<<"輸出10000以內的回文素數:"<<endl;
for(a=2;a<=10000;++a)
{
if(isprimer(a)&&ispalindrome(a))
{
cout<<a<<" ";
}
}
cout<<endl<<endl;
return 0;
}
int fanxushu(int i) //反序數函數
{
int l;
l=0;
while(i>0)
{
l=l*10+i%10;
i=i/10;
}
return l;
}
bool ispalindrome(int i) //回文數函數
{
int j,l;
bool palindrome=false;
j=i;
l=0;
while(j>0)
{
l=l*10+j%10;
j=j/10;
}
if(i==l)
{
palindrome=true;
}
return palindrome;
}
bool isprimer(int i) //素數函數
{
int j,k;
bool prime=true;
k=int(sqrt(i));
for(j=2;j<=k;++j)
{
if(i%j==0)
{
prime=false;
break;
}
}
return prime;
}
運行效果如下圖所示:

希望本文所述對大家C++程序設計有所幫助。

