【发布时间】:2021-05-24 22:32:00
【问题描述】:
所以我遇到了一个我似乎无法解决的问题。我想显示它被提升到的因子和功率(基本上是素因子分解),我已经在 python 中完成了这个,但由于某种原因我无法在 C 中实现它,这就是我想出的
#include<stdio.h>
#include<math.h>
int main()
{
int i = 2, p, c, n;
scanf("%d", n);
while (n > 9)
{
p = 0;
c = 1;
while (n % i == 0)
{
for (int d = 2; d <= i / 2 + 1; d++)
if (i % d == 0 && i % 2 != 0)
c = 0;
if (c == 1)
{
p = p + 1;
n = n / i;
}
if (p != 0)
{
printf("%d %d", i, p);
printf("\n");
}
i = i + 1;
}
}
return 0;
}
【问题讨论】:
-
具体来说,出了什么问题?您可能还希望在您的程序中修复您的缩进 - 其他人很难按照您拥有的不同寻常的风格来遵循代码。
-
启用所有编译器警告并修复警告。对于
scanf行,您应该会收到类似main.c:7:10: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘int’ [-Wformat=]的警告。在调试器中运行你的程序,看看发生了什么。 -
@PaulHankin 进程以退出代码 -1073741819 (0xC0000005) 结束。这就是错误。另外我应该如何改变我的缩进?
-
@RaresAmza — 如果编译器打算对您的代码发出警告,请假设您的代码中存在错误并找出如何修复它。您可能需要阅读 GCC 手册。 GCC Warning Options 描述了选项及其发现的内容;现代版本的 GCC 会告诉您哪个警告选项触发了投诉。这在学习 C 的第一天可能会很困难,但它会在以后帮助你。
-
@RaresAmza 当您看到编译器警告或错误并且找不到足够的信息如何修复它们时,您可以在此处显示代码和消息并寻求帮助。
标签: c algorithm prime-factoring