一种求一定有正整数解的高次方程的方法
起源
关于为什么要写这篇文章,是因为牛顿迭代法建立在导数的基础上,因而不好理解,需要用到微积分。
所以结合一些定理和本人平时解方程的经验有了这种方法。
限制
仅限一个高次方程有正整数解时使用,但效率较高。
前置数学知识
余式定理:一多项式
证明:我们设
由于
我们将
拓展定理:因式定理:若一实数
证明:由余式定理,得
再拓展定理:一多项式函数
证明:由因式定理,我们设
又由
算法实现
对于函数
代码
#include<bits/stdc++.h>
using namespace std;
int n,a[10010];
int qpow(int base,int up){
int ans=1;
while(up){
if(up&1){
ans*=base;
}
base*=base;
up>>=1;
}
return ans;
}
int main(){
cin>>n;
for(int i=1;i<=n+1;i++){
cin>>a[i];
}
for(int i=1;i<=sqrt(a[n+1]);i++){
if(a[n+1]%i==0){
int sum=0;
for(int j=1;j<=n+1;j++){
sum+=a[j]*qpow(i,n-j+1);
}
if(sum==0){
cout<<i<<" ";
}
}
}
return 0;
}