这一切都在标题中 简单地说我写了这个。
#include <iostream>
using namespace std;
int main()
{
int a,i;
cout<<"Enter a number: ";
cin>>a;
for (i=2;i<=a/2;i++)
{
if (a%i==0)
{
cout<<"Its not Prime Number.";
system ("pause");
return 0;
}
}
cout<<"Its a Prime number.";
system ("pause");
}
主要的是没有使用循环和递归函数。
答案 0 :(得分:2)
你主要想看看你的for循环体是一个以“int i”为参数的函数。然后在函数开头对i&lt; = a / 2进行测试,并在其末尾调用“function(i + 1)”。
答案 1 :(得分:0)
这是一个递归素性测试函数:
int test_prime(unsigned n, unsigned d)
{
if (n < 2) {
return 0;
}
if (d == 1) {
return 1;
} else {
if (n % d == 0) {
return 0;
} else {
return test_prime(n, d - 1);
}
}
}
使用它像:
unsigned n;
std::cin >> n;
std::cout << (test_prime(n, n / 2) ? "prime" : "not prime") << "\n";
答案 2 :(得分:0)
这是一个基于递归的解决方案,如果提供了编译时常量值,它也可以在编译时执行计算
:constexpr bool check_divisibility(int i, int j)
{
return (j == 1) ? false :
((i % j == 0) ? true : check_divisibility(i, j - 1));
}
constexpr bool is_prime(int i) { return !check_divisibility(i, i / 2); }
以下是在客户端代码中使用它的方法:
#include <iostream>
using namespace std;
int main()
{
static_assert(is_prime(11), "Error!"); // Computed at compile-time
int x = 15;
cout << is_prime(x); // Computed at run-time
}