0

//目的:如果 emirps 到控制台,则显示第一个“n”(用户选择)数字,每行五个。//注意:“emirp”是一个质数,反转时也是质数。

#include <iostream>
using namespace std;
bool isPrime(int value); //Prototyle for "prime number function"
int reverse (int value2); //Prototype for "emirp function"

int main()
{

//向用户询问一个正数

    cout << "Please enter a positive number:  ";
    int n;
    cin >> n;

//拒绝负值输入

    if ( n < 1) 
    {
        cout << "INVALID NUMBER \n"; 
    }
    else
    {

//计算直到'n'的所有emirps。

    int test = 0;
    int number = 2;
    while (test < n)
    {

   if (isPrime(number) && reverse(number))
   {
        cout << "\n" << reverse(number) << "\t\t\t";
        test++;
    }
   else
   {
        test++;
   }
    }
    }
    system("pause");
    return 0;
}

bool isPrime(int value)
{

//如果值是素数,则余数(计数)将为零两次——对于 1 和它本身。

    int divisor = 1;
    int count = 0;
    int prime = 0;
    if (value % divisor == 0)
    {
        count++;
        ++divisor;
    }
    if (count = 2)
    {
        return true;
    }
    else
    {
        return false;
    }
}


int reverse(int value2)
{
    //reverse the number
    value2*=10;
    value2 = value2 %10;
    value2/=10;

//与素数函数相同的过程

    int divisor2 = 1;   
    int count2 = 0;
    int emirp = 0;
    if (value2 % divisor2 == 0)
    {
        count2++;
        ++divisor2;
    }
    if (count2 = 2)
    {
    int emirp = value2;
    }
    return emirp;
}
4

2 回答 2

1

如果只是查看控制台输出:

  1. CTRL+F5在 Visual Studio 中运行应用程序。

  2. 只需提供一个getch()in main() 函数

而且您的代码语法不正确:

  1.  if (count = 2) //count ==2
     {
       return true;
      }
    
  2.  if (isPrime(number) && reverse(number))
     { 
      cout << "\n" << reverse(number) << "\t\t\t";
      test++;
      }
    

将调用 reverse() 2 次。

修改它像;

int RevNum = reverse(number);

if (isPrime(number) &&RevNum)
  {
    cout << "\n" << RevNum << "\t\t\t";
    test++;
   }
于 2013-02-08T07:35:58.417 回答
1

这甚至是如何构建的?如果(计数 = 2){ ... }

另外:您的反向函数只返回一个 int,您希望 if (isPrime(number) && reverse(number))对该结果做什么?

顺便说一句,这不是再次进行整个计算的好方法:

 cout << "\n" << reverse(number) << "\t\t\t"; //you already did this in your "check" 

编辑:难怪它不起作用。 您每次都检查数值 (2),而不是 n

于 2013-02-08T07:38:11.660 回答