gpt4 book ai didi

无法正确打印社交号码

转载 作者:太空宇宙 更新时间:2023-11-04 04:26:59 25 4
gpt4 key购买 nike

我有一个代码可以找到一个数字的除数之和,但我无法将它应用到我递增的 n 上并分别打印所有数字。
代码是

long div(int n) {
long sum = 0;
int square_root = sqrt(n);

for (int i = 1; i <= square_root; i++) {
if (n % i == 0) {
sum += i;
if (i * i != n) {
sum += n / i;
}
}
}

return sum - n;
}

在我的 main() 上,我需要一个从 1 开始到我的 MAXCYC(即 28)的 c 数。n 从 2 到 MAXNUM(即 10000000)。该程序需要找到所有完美、友善和善于交际的数字并用它们各自的对打印它们。
示例输出:
长度为2的循环:12285 14595 12285
长度为5的循环:12496 14288 15472 14536 14264 12496

for (int n = 2; n <= MAXNUM; n++) { 

long sum = div(n);
long res = div(sum);
if (res <= MAXNUM) { // Checking if the number is just sociable
int c = 0;

while (c <= MAXCYC && n != res) {
res = div(sum);
c++;
}
if (c <= MAXCYC) {
printf("Cycle of length %d: ", c);

printf("%ld ", sum);
do {
printf("%ld ", res);
res = div(res);
}
while (sum < res);

printf("%ld ", sum);
c += c - 2;
printf("\n");
}
}
}

我只得到一对循环长度 1、2,除此之外什么都没有。而且它甚至没有正确打印它,因为它说长度为 0 的循环:在所有结果中没有增加。我认为问题出在第一次打印之前的 f 但我无法让它以一种只要我的方式工作
(n == sum) 它打印Cycle of length 1: x x pairs
(n == res && sum < res) 它打印Cycle of length 2: x y x pairs
(res <= MAXNUM) 它打印Cycle of length c: x y z ... x(c对数量,包括第一个x)

你们认为我应该改变什么?

最佳答案

好的,如果我很好地理解您的要求,这段代码应该可以工作。

#include <stdio.h>
#include <stdlib.h>

int div_sum(int n)
{
long sum = 0;
int square_root = sqrt(n);

for (int i = 1; i <= square_root; i++)
{
if (n % i == 0)
{
sum += i;
if (i * i != n)
{
sum += n / i;
}
}
}
return sum - n;
}

int MAX_N = 10000000;
int MAX_CYCLES = 28;


int main()
{
int cycles;
for(int n = 2; n < MAX_N; n++){
int found = 0;
for(int c = 1; !found && c <= MAX_CYCLES; c++){
cycles = c;
int aliquote = n;
while(cycles--) aliquote = div_sum(aliquote);

//it is a cycle of length c
cycles = c;
if(n == aliquote){
printf("Cycle of length %d: %d", c, n);
while(cycles--){
aliquote = div_sum(aliquote);
printf(" %d", aliquote);
}
printf("\n");
found = 1;
}
}
}
return 0;
}

关于无法正确打印社交号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40450093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com