求3000以内的亲蜜数用c语言
时间: 2024-06-13 08:06:28 浏览: 12
以下是求3000以内的亲密数的C语言代码:
```c
#include <stdio.h>
// 求一个数的所有因子之和
int factorSum(int num) {
int sum = 0;
for (int i = 1; i < num; i++) {
if (num % i == 0) {
sum += i;
}
}
return sum;
}
int main() {
for (int i = 1; i <= 3000; i++) {
int sum1 = factorSum(i);
int sum2 = factorSum(sum1);
if (i == sum2 && i < sum1) {
printf("%d和%d是一对亲密数\n", i, sum1);
}
}
return 0;
}
```
运行结果如下:
```
220和284是一对亲密数
1184和1210是一对亲密数
2620和2924是一对亲密数
```
相关问题
用C语言求3000以内的亲密数的代码
以下是用C语言求解3000以内的亲密数的代码:
```c
#include <stdio.h>
int main() {
int num1, num2, sum1, sum2;
printf("3000以内的亲密数对有:\n");
for (num1 = 1; num1 <= 3000; num1++) {
sum1 = 0;
for (int i = 1; i < num1; i++) {
if (num1 % i == 0)
sum1 += i;
}
num2 = sum1;
sum2 = 0;
for (int i = 1; i < num2; i++) {
if (num2 % i == 0)
sum2 += i;
}
if (sum2 == num1 && num1 < num2 && num2 <= 3000) {
printf("(%d, %d)\n", num1, num2);
}
}
return 0;
}
```
代码的思路是:从1到3000遍历每个数,对于每个数,计算它的因子和sum1,然后以sum1为新的数,计算sum1的因子和sum2,如果sum2等于最初的数num1,且num2比num1大且不超过3000,则找到了一个亲密数对(num1, num2)。最后输出所有的亲密数对即可。
c语言用函数求3000以内的全部亲密数。
可以,以下是解决方案:
```c
#include <stdio.h>
// 计算因子和
int sum_of_factor(int n)
{
int sum = 0;
for (int i = 1; i < n; i++)
{
if (n % i == 0) sum += i;
}
return sum;
}
int main()
{
for (int i = 2; i <= 3000; i++)
{
int sum1 = sum_of_factor(i);
int sum2 = sum_of_factor(sum1);
if (sum2 == i && sum1 != i)
{
printf("%d和%d是一对亲密数\n", i, sum1);
}
}
return 0;
}
```
该程序可以计算3000以内的所有亲密数。