C++ C+中的威尔逊定理+;,输出不正确?
我用威尔逊定理写了一个函数,它应该检查一个整数是否是素数。然而,它输出的结果是5不是一个质数,这显然是。我想问为什么会这样C++ C+中的威尔逊定理+;,输出不正确?,c++,proof,theorem,C++,Proof,Theorem,我用威尔逊定理写了一个函数,它应该检查一个整数是否是素数。然而,它输出的结果是5不是一个质数,这显然是。我想问为什么会这样 #include <iostream> using namespace std; long int counter = 1; bool primeWilson(int n) { for(int i=1; i<n; i++) { counter*=i; } if(n%(counter+1)!=0) {
#include <iostream>
using namespace std;
long int counter = 1;
bool primeWilson(int n)
{
for(int i=1; i<n; i++)
{
counter*=i;
}
if(n%(counter+1)!=0)
{
return true;
}
return false;
}
#包括
使用名称空间std;
长整数计数器=1;
布尔普里姆威尔逊(国际北)
{
对于(inti=1;i您正在检查实现Wilson的错误方法。
例如:
25可被5整除
但是
5不能被25整除
n%(counter+1)
->
您正在检查实现Wilson的错误方法。
例如:
25可被5整除
但是
5不能被25整除
n%(counter+1)
->
请注意,计算的阶乘将很快在<>代码> INT/COM>范围内,或者C++中的任何基本积分类型。这不是5的问题,但它肯定是20的。除了逻辑问题之外,您可能想将“代码>计数器/代码>的初始化移动到函数中,以防您遇到错误。你可以经常调用它。也许整个定义可以被移动。注意你计算的阶乘将很快地增长到超出代码< int > >的范围内,或者C++中的任何基本积分类型。这不是5的问题,但它几乎肯定是20。除了逻辑问题,你可能想要。将计数器
的初始化移到函数中,以防您想多次调用它。也许可以移动整个定义。