c - c中素数分解程序的问题。它并不总是有效。它只在某些情况下有效

标签 c

这个程序的目的是从任何给定的数字中分解出任何素数。

除某些情况外,它工作正常。例如,它不适用于数字 1024。我不明白这是什么问题。非常感谢您的帮助..提前致谢

#include<stdio.h>

int main()
{
    int n1,n0,A[100];
    char i,j,p=0;
    printf("insert number: ");
    scanf("%d",&n1);
    n0=n1;
    for(i=2; i<=n1; i++)
    {

        while (n0%i==0)
        {
            n0=n0/i;
            A[p]=i;
            p++;

        }
    }
    for(j=0; j<p; j++)
    {
        printf("%d ",A[j]);
    }

    return 0;
}

最佳答案

代码使用char i。大多数系统上(有符号)字符的范围是 -128 到 127。

i 如果大于 127,则永远不会达到 n1。请改用 int

关于c - c中素数分解程序的问题。它并不总是有效。它只在某些情况下有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51182258/

相关文章:

c - 如何在 C 中同时运行两个子进程?

python - 如何在pygtk中添加opencv窗口?

php - 来自linux(debian)的Web服务器将数据发送到网络中的IP

c - (x < 8) 当 x = -3 时返回 false( double )

c++ - 创建类似 OpenGL 的图形库

c - Enterprise Architect 不能传递空位域成员

c -/usr/include/linux 和/usr/include/x86_64-linux-gnu/有什么区别

c++ - 如何使用 C++ 分发 lua 文件

c - 如何使用 printf 系列可移植地打印 size_t 变量?

使用 C 的日历 — 无法让它工作