我正在尝试编写一个 C 程序,给定一个正整数 n (> 1) 检测是否存在数字 x 和 r 以便 n = x^r
这是我到目前为止所做的:
while (c>=d) {
double y = pow(sum, 1.0/d);
if (floor(y) == y) {
out = y;
break;
}
d++;
}
在上面的程序中,“c”是指数 (r) 的最大值,“d”将从等于 2 开始。Y 是要检查的值,变量“out”设置为稍后输出该值在。基本上,脚本所做的是检查 y 的平方根是否存在:如果不存在,他会尝试使用平方根,依此类推......当他找到它时,他将 y 的值存储在“out”中,这样: y = 出^d
我的问题是,有没有更有效的方法来找到这些值?我在网上找到了一些文档,但这比我的高中代数要复杂得多。我怎样才能以更有效的方式实现这一点?
谢谢!