C语言经典算法 - 求完美数的代码

本文分享了使用C语言实现的求完美数的经典算法。通过定义数组存储质数和因子,利用循环和条件判断,实现了从1到10000范围内完美数的查找与输出。对于喜欢算法和C语言编程的读者来说,这是一个很好的学习和实践案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在研发过程中,把写内容过程重要的一些内容片段做个珍藏,下边内容内容是关于C语言经典算法 - 求完美数的内容,应该能对各朋友有用处。

#include <stdio.h>
#include <stdlib.h>
#define N 1000
#define P 10000
int main(void)
{
int ptable[N + 1] =
{
0
int fact[N + 1] =
{
0
int count1, count2, i;
count1 = prime(ptable);
for (i = 0; i <= P; i++)
{
count2 = factor(ptable, i, fact);
if (i == fsum(fact, count2))
printf(“Perfect Number: %dn”, i);
}
printf(“n”);
return 0;
}

{
int i, j;
int prime[N + 1];
for (i = 2; i <= N; i++)
prime[i] = 1;
{
if (prime[i] == 1)
{
{
if (j % i == 0)
prime[j] = 0;
}
}
}
for (i = 2, j = 0; i < N; i++)
{
if (prime[i] == 1)
pNum[j++] = i;
}
return j;
}

{
int i, k;
{
if (num % table[i] == 0)
{
frecord[k] = table[i];
k++;
num /= table[i];
}
else
i++;
}
frecord[k] = num;
return k + 1;
}

{
int i, r, s, q;
i = 0;
r = 1;
s = 1;
q = 1;
while (i < c)
{
do
{
q += r;
i++;
}
while (i < c - 1 && farr[i - 1] == farr[i]);
r = 1;
q = 1;
}
return s / 2;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值