C语言,用数组实现结果为100000位内的大整数幂运算。
2017-12-29 16:27
447 查看
C语言,用数组实现结果为100000位内的大整数幂运算。
在此给出源代码,复制粘贴后即可运行。
可以稍作修改然后封装作为一种运算函数。
/*本程序在使用简化运算的情况下可以用于保存2的32位的数;
如果不用简化算法,可以处理2的32位的2的32位次幂
当进行程序嵌套后,应该会大大提高存储的能力。
主要的问题在于计算机算不出来。。。
程序缺陷在于 对底数和指数有限制 */
(如果有时间,将会继续更新,因为使用int 花费比较大,也可以考虑用其他的方法解决)。
注:goto 语句不符合编程的思想的,不建议打开。但也可以自行打开,这样可以方便的多次运行测试。
在此给出源代码,复制粘贴后即可运行。
可以稍作修改然后封装作为一种运算函数。
/*本程序在使用简化运算的情况下可以用于保存2的32位的数;
如果不用简化算法,可以处理2的32位的2的32位次幂
当进行程序嵌套后,应该会大大提高存储的能力。
主要的问题在于计算机算不出来。。。
程序缺陷在于 对底数和指数有限制 */
(如果有时间,将会继续更新,因为使用int 花费比较大,也可以考虑用其他的方法解决)。
注:goto 语句不符合编程的思想的,不建议打开。但也可以自行打开,这样可以方便的多次运行测试。
#include <stdio.h> #include<stdlib.h> int main() { //幂运算 //START:; int j, i, A, B, C; /*int i; int A; int B; int C;*/ printf("*************************************\n"); printf("本程序适用于结果为100000位内的幂运算。\n请输入底数:\n"); int n = 1; scanf_s("%d", &n); printf("请输入指数:\n"); int m = 0; scanf_s ("%d", &m); int l = 0; C = n; do { C = C / 10; l++; } while (C != 0); int w = l * m;//减少运算量,准备做if printf("最多有%d位数。\n", w); int a[100000] = { 0 }; a[99999] = 1; for (j = 1; j <= m; j++) { B = 0; // A=0; if (w<100000) { for (i = 99999; i>w - 1; i--) { A = a[i] * n + B; a[i] = A % 10; B = A / 10; } } else { for (i = 99999; i >= 0; i--) { A = a[i] * n + B; a[i] = A % 10; B = A / 10; } } } if (a[0]) { printf("结果超出100000位。\n数据有可能溢出,请扩大可操作范围后使用。\n"); }; int k = 0; do { k++; } while (a[k] == 0); //printf ("%d\n",a[k]); printf("\n"); for (i = k; i<100000; i++) { printf("%d", a[i]); } printf("\n结果共有%d位数.\n", (100000 - k)); system("pause"); //goto START; return 0; }
相关文章推荐
- java实现输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果
- 算法题: 求一个整数数组中,通过元素加减运算得到指定结果的所有运算过程. 例如【5,4,6,7,1】= 9 ?
- C语言实现大整数乘法代码的完整代码及运行结果
- 大整数加减运算的C语言实现
- Java实现:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。
- 在C语言中运用全局变量返回函数的数组运算结果(Lu Hongling)
- 算法题: 求一个整数数组中,通过元素加减运算得到指定结果的所有运算过程. 例如【5,4,6,7,1】= 9 ?
- C语言实现整数数组的逆置算法
- 算法题: 求一个整数数组中,通过元素加减运算得到指定结果的所有运算过程. 例如【5,4,6,7,1】= 9 ?
- 【源代码】将一个整数的每位数分解并按逆序放入一个数组中(用递归算法)(C语言实现)
- C语言实现数组倒置(异或运算)
- C语言实现大整数加减运算详解
- 用C语言实现动态数组的大整数乘法
- C语言实现整数四则运算表达式的计算
- 自定义大数类,用数组实现任意超大整数的加减乘运算
- C语言实现大整数运算
- 【源码】将一个整数的每位数分解并按逆序放入一个数组中(用递归算法)(C语言实现)
- 《剑指offer》-判断某整数数组是不是某二叉搜索树后序遍历的结果
- 第22节 C语言结构体之结构体嵌套、结构体指针与结构体数组的代码实现
- C语言小程序------------数组实现栈功能(一)