C++编程:求因子和、逆序输出、判断个位数和素数算法实现

需积分: 9 0 下载量 55 浏览量 更新于2024-08-04 收藏 4KB MD 举报
"C++编程实践,包括计算一个数的因子之和、逆序输出数字、判断数字个位数以及寻找素数的算法实现" 在C++编程中,常常需要处理各种算法问题,以下代码展示了几个基础但实用的算法示例。 1. **求n的因子之和** ```c++ int yinzihe(int n) { int sum = 0; for (int i = 1; i < n; i++) { if (n % i == 0) { sum += i; } } return sum; } ``` 这段代码定义了一个函数`yinzihe`,用于计算输入整数`n`的所有正因子(不包括自身)的和。通过`for`循环遍历从1到`n-1`的整数,如果`n`能被`i`整除(即`n % i == 0`),则将`i`加到`sum`上。最后返回`sum`作为因子之和。 2. **求n的逆序输出** ```c++ int daoxu(int n) { int m = 0; while (n > 0) { m = m * 10 + n % 10; n /= 10; } return m; } ``` `daoxu`函数用于将输入整数`n`的每一位数字逆序排列并返回新的整数。通过不断将`n`除以10并取余,然后将余数添加到`m`的左侧,实现了数字的逆序。 3. **将n放到数组中以判断个位数情况** ```c++ int geweishu(int x) { int cur_len = 1; while (x / cur_len >= 10) { cur_len *= 10; } int i = 0; while (x > 0) { arr[i] = x / cur_len; i++; x = x % cur_len; cur_len /= 10; } return i; } ``` 函数`geweishu`将整数`x`的每一位数字存储到数组`arr`中,返回数组中有效元素的个数。通过不断更新`cur_len`以适应当前数字的位数,然后将`x`除以`cur_len`得到的商存入数组,最后通过`x % cur_len`更新`x`,直到`x`变为0。 4. **求i到n中的素数** ```c++ void find(int i, int n) { int cnt = 0; for (int j = i;; j++) { int sum = 0; for (int k = 2; k < j; k++) { if (j % k == 0) { sum++; } } if (sum == 0) { cout << j << ""; cnt++; } if (cnt == n) break; } } ``` 这段代码定义了一个`find`函数,它从`i`开始,寻找并输出`n`个素数。使用嵌套`for`循环来检查每个数字`j`是否为素数:如果`j`不能被2到`j-1`之间的任何数字整除(即`sum`为0),则输出`j`并增加计数器`cnt`。当找到`n`个素数时,函数退出。 这些C++代码实例展示了基本的算法操作,如遍历、条件判断、数组操作以及数学运算,是理解和实践C++算法的基础。通过这些例子,开发者可以更好地掌握如何在实际问题中应用C++来解决问题。