c语言分解质因数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言分解质因数相关的知识,希望对你有一定的参考价值。

#include "stdafx.h"
main()

int n,i;

printf("\nplease input a number:\n");

scanf("%d",&n);

printf("%d=",n);

for(i=2;i<=n;i++)


while(n!=i)
if(n%i==0)
printf("%d*",i);n=n/i;
else break;


printf("%d",n);
printf("\n");

为什么while(n!=i)?
当n=90,显示90=2*3*3*5,为什么没有while(n!=i),显示90=2*3*15?

这个算法是嵌套的循环
外层的 for循环 表示 i 越来越大 变量i用来试探每一个小于n的数是否为因子
内存的while循环表示 n 越来越小 表示i 是否为 一个因子 这个因子共出现几次。
n 会越来越小 但是不能小于i 否则就跳出while循环。所以要写 while(n!=i)
参考技术A if((n%i==0)&&(i!=n))
n=n/i;
printf("*%d",i);

这个地方,i作为n的因数不一定只出现一次
所以应该用while循环,让n=n/i直到无法除尽,否则可能影响后面的因子
if((n%i==0)&&(i!=n))

while(n%i==0)
n=n/i;
printf("*%d",i);
参考技术B 因为可能有多个质因数i

以上是关于c语言分解质因数的主要内容,如果未能解决你的问题,请参考以下文章

c语言质因数分解题目怎么做

c语言程序编程(分解质因数)

C语言分解质因数

c语言求分解质因数

c语言分解质因数的问题

C语言算法之分解质因数