gpt4 book ai didi

c - 欧拉计划,#3 好奇心

转载 作者:行者123 更新时间:2023-11-30 16:59:24 27 4
gpt4 key购买 nike

欧拉计划 - 3 --- 问题

我是编程艺术的初学者,我开始解决 Project Euler 问题。

我尝试用 C 语言解决第三个问题,但我不明白为什么它不起作用。

    #include <stdio.h>
#include <stdlib.h>
int main ()
{
int prime = 0;
long long number, factor, primeFactor = 0, i;
printf("\n\nNumber :");
scanf("%lld", &number);
factor = number;
while (primeFactor == 0) {
factor --;
if (number % factor == 0) {
for (i = 2; i < factor; i++) {
if (factor % i == 0) {
prime = 0;
}
}
if (prime) {
primeFactor = factor;
}
prime = 0;
}
}
if (primeFactor == 0) {
printf("\nIt has no prime factors.\n\n");
}
else printf("\n%lld\n", primeFactor);
return 0;
}

那么,有人可以向我解释一下为什么它不起作用吗?

谢谢! :)

最佳答案

你的内循环逻辑错误,正如BLUEPIXY暗示的那样,你需要做相反的事情:

#include <stdio.h>
#include <stdlib.h>
int main ()
{
int prime = 0;
long long number, factor, primeFactor = 0, i;
printf("\n\nNumber :");
scanf("%lld", &number);
factor = number;
while (primeFactor == 0) {
factor--;
printf("%lld %lld\n",number,factor);
if (number % factor == 0) {
for (i = 2; i < factor; i++) {
if (factor % i == 0) {
prime = 1;
}
}
if (!prime) {
primeFactor = factor;
}
prime = 0;
}
}
if (primeFactor == 0) {
printf("\nIt has no prime factors.\n\n");
}
else printf("\n%lld\n", primeFactor);
return 0;
}

另外:1 不是质数,您也需要检查这一点。输入本身也不会被检查(此处必须大于 1)。

请学习如何使用调试器。不,实际上,了解如何使用您所学语言的调试器与学习语言本身一样重要。

关于c - 欧拉计划,#3 好奇心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38163839/

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