【发布时间】:2021-01-27 07:15:13
【问题描述】:
我必须编写一个程序来检查输入的数字是否具有这些条件:
一个本身是素数的数字,该数字的反面也是素数,并且该数字的数字也是素数(例如这个数字:7523)。 如果需要,进入运行程序时必须显示“是”,否则为“否”。
我知道素数和倒数的代码,但我不知道如何合并它们。
这是代码:
#include <iostream>
#include <conio.h>
using namespace std;
void prime_check(int x) {
int a, i, flag = 1;
cin >> a;
for (i = 2; i <= a / 2 && flag == 1; i++) {
if (a % i == 0)
flag = 0;
}
if (flag == 1)
cout << "prime";
else
break;
}
int main() {
int a, r, sum = 0;
cin >> a;
while (a != 0) {
r = a % 10;
sum = (sum * 10) + r;
a = a / 10;
}
}
程序在每一步都要检查输入的数字的每个数字是否是质数,然后显示“是”,但它不起作用。
【问题讨论】:
-
什么在你眼里不起作用?您是否已经使用调试器一步一步地通过您的应用程序?您知道您的应用程序从不调用 prime_check 吗?
-
"[...]但我不知道如何合并它们。"在while循环结束之前调用
prime_check(a)? -
问题是你的每个函数都在做三个的事情,1)输入数字,2)测试数字和3)输出结果。要结合这些功能,您需要有两个仅测试数字的功能。然后您可以在同一个号码上使用这两个功能,而不是输入两个不同的号码。您将需要学习如何使用函数参数,将 inutp 编号传递给两个函数,以及如何使用函数返回值来返回测试结果。数字的输入和结果的输出在main中。
-
提示:除 2 和 5 外,素数不能以 0、2、4、5、6、8 中的任何一个数字结尾。由于您也在查看反转的数字,因此意味着您无需费心测试以这些数字开头的数字,因为反转的数字将以原始起始数字结尾,因此不能是素数。