用c编成实现模重复平方根的算法
时间: 2023-05-29 13:07:47 浏览: 55
以下是用C语言实现模重复平方根的算法的示例代码:
```c
#include <stdio.h>
#include <math.h>
int main() {
long long int n, a, b, c; // 使用 long long int 类型以支持大整数
int m, i;
printf("请输入一个正整数 n:");
scanf("%lld", &n);
m = sqrt(n);
if (m * m == n) {
printf("%lld 是完全平方数,它的平方根是 %d\n", n, m);
return 0;
}
a = m;
b = 1;
c = n;
for (i = 0; ; i++) {
m = (int)((a + sqrt(c)) / b);
a = m * b - a;
c = (n - a * a) / c * b * b;
b = c / b;
if (m * b == a && i != 0) { // 判断是否进入循环
printf("%lld 不是完全平方数,它的模重复平方根为 %d\n", n, i + 1);
return 0;
}
}
}
```
该程序首先读入一个正整数 $n$,然后判断它是否为完全平方数。如果是,则输出其平方根并结束程序;否则,使用模重复平方根的算法求出其模重复平方根并输出。其中,变量 $a$、$b$、$c$ 分别表示算法中的三个变量,变量 $m$ 为计算过程中的临时变量,变量 $i$ 用于记录循环次数(即模重复平方根的值)。