c程序 输入一个正整数,将它分解为质因数的乘积的形式输出,(例如输入:90 ,打印:90=2*3*3*5 )

来源:百度知道 编辑:UC知道 时间:2024/05/29 09:51:41
质因数只能被1和它本身整除,本人是菜鸟希望高手们适当添加点注释!谢谢啊!
不调用库或自定义函数,只用循环和数组实现,能在VC++6下编译:回答者程序有问题,输入90结果对了,另举几个数据进程序运行会出错!请检查

wchknudt的程序有问题。在判断某个质数能否被n整除时,忘记每次找到一个质因数后,应该将n除以该质因数。这样,n始终保持初始值,永远能被第一个质因数整除,循环无法停止。应该设一个辅助变量,初始值为n,循环中对该辅助变量进行操作即可。

#include <stdio.h>
#include <math.h>
#include <memory.h>

int flist[10000];
int factor[10000];
int cnt = 0;
//用最简单的方法,不用筛法了
int isPrime(int n)
{
int i;
for (i = 2; i <= sqrt(n*1.0); i++)
if (n % i == 0 )
return 0;
return 1;
}

int main()
{
int n,s;
scanf("%d", &n);
s=n;

memset(flist, 0, sizeof(int));
int i = 0;
for (i = 2; i <= sqrt(n*1.0); i++)
{
if ( s % i == 0)
{
if (isPrime(i) )
{
while (s % i == 0 )
{
flist[cnt]++;
factor[cnt] = i;
s/=i;
}
cnt++;
}
}
}

printf("%d=", n);
for(i = 0; i <cnt; i++)

c程序 输入一个正整数,将它分解为质因数的乘积的形式输出,(例如输入:90 ,打印:90=2*3*3*5 ) 编写一个C程序,最多接收10个数,求出其中所有正整数的和.用户可通过999终止程序,统计输入正整数的个数并求 用C语言编写程序,实现输入一个m,打印出一个菱形;如输入3,打印出(m为正整数). 编写一个c程序,程序运行时要求用户输入两个正整数m和n,然后程序给出这两个数的最大公约数和最小公倍数。 以有一个已排好的数组,今输入一个数,要求按原来排序的规律将它插入数组中?求其算法或c语言程序? c语言问题:如何编写一个程序,输入一个正整数N,在屏幕上用‘*’打印以N为边长的正六边形。 编写程序:输入提一个正整数,判断该数是奇数还是偶数,并输出结果 输入一个四位正整数,编写程序将其逆序输出 c语言: 输入一个十进制正整数,将其转换成八进制数,并输出结果。 c语言 输入一个正整数n,把它分解成质因子相乘的形式