读书人

c++好手帮忙吧

发布时间: 2012-07-23 09:42:19 作者: rapoo

c++高手帮忙吧





用c++编写程序
判断一个数是否为可逆素数 若是 再让可逆素数加一后分解为两个素数之和


[解决办法]

C/C++ code
#include <iostream>#include <string>#include <vector>using namespace std;typedef struct _prime_pair{    int number1;    int number2;}prime_pair;bool is_prime(int x)                // 判断一个数是否为素数{      if (x == 1)    return false;        // 1不是素数    bool result = true;    for (int i = 2; i * i <= x; i++)    {        if ( x % i == 0)        {            result = false;            break;        }    }    return result;}bool is_reverse_prime(int x){    int reverse_number = 0;    char temp[20] = {0};    if(!is_prime(x)) return false;    memset(temp, 0, 20);    itoa(x, temp, 10);    string str(temp);    reverse(str.begin(), str.end());    memset(temp, 0, 20);    strcpy(temp, str.c_str());    reverse_number = atoi(temp);    if(!is_prime(reverse_number)) return false;    return true;}vector<prime_pair> composition(int x){    vector<prime_pair>  vpr;    ++x;    for(int i = 2; i < x; ++i)    {        if(is_prime(i) && is_prime(x - i))        {            prime_pair pp = {i, x - i};            vpr.push_back(pp);        }    }    return vpr;}int main(int argc, char* argv[]){    int number;    vector<prime_pair> vpr;    while(1)    {        cin.clear();        cin.sync();        cout << "Please input a number, or enter 0 to quit." << endl;        cin >> number;        if(number == 0) break;        // 如果输入0就退出循环        // 判断是否为素数        if(is_prime(number))        {            cout << number << " is a prime number" << endl;            // 判断是否为可逆素数            if(is_reverse_prime(number))            {                cout << number << " is a reverse prime number" << endl;                // 将number + 1拆分为两个素数之和                vpr = composition(number);                cout << number << " + 1 = " << number + 1 << " can be composed by the following prime number pairs:" << endl;                for(vector<prime_pair>::iterator iter = vpr.begin(); iter != vpr.end(); ++iter)                {                    cout << number + 1 << " = " << iter->number1 << " + " << iter->number2 << endl;                }            }            else            {                cout << number << " is not a reverse prime number" << endl;            }        }        else        {            cout << number << " is not a prime number" << endl;        }    }    return 0;} 

读书人网 >C语言

热点推荐