将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
下面有两种方法 我想高手能给出更好的方法#include<stdio.h>
int zhishu(int n)
{
int i;
for(i=2;i<=n/2;i++)
if(n%i==0) return 1;
if(i>n/2) return 0;
}
void main()
{
int i,n;
printf("请输入一个整数:\n");
scanf("%d",&n);
if(!zhishu(n)) printf("你输入的是质数:%d=1*%d\n",n,n);
else
{
printf("%d=",n);
do
{
for(i=2;i<=n/2;i++)
if(n%i==0)
{
printf("%d*",i);
n=n/i;
break;
}
}
while(zhishu(n));
printf("%d\n",n);
}
}
#include<stdio.h>
void main()
{
int n,i;
printf("please input a number:");
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",n);
}
----------------解决方案--------------------------------------------------------
不知道LZ调试过没有,我运行不了,改一下,可运行了,你写的质数函数那个,它不是每一次都能反回一个值,所以不能运行.int zhishu(int n)
{
int i,a;
for(i=2;i<=n/2;i++)
if(n%i==0) break;
if(i>n/2) a=1;
if(a) return 1;
else return 0 ;
}
但还有就是你的main( ) 最后一个数怎么就输不出,如36. 只输出36=2*2*3*,搞不懂.第二个可以
我是用VC 运行的
----------------解决方案--------------------------------------------------------
不可能的 我是测试过才发上来的 我刚才也测试过了 对的
有zhishu()是来判断质数的 也就是当n为质数时就跳出来结束
----------------解决方案--------------------------------------------------------
LZ
麻烦问问lz是什嘛意思? ----------------解决方案--------------------------------------------------------
用别的方法写
----------------解决方案--------------------------------------------------------
本人脑子的细胞有限 想不到别的
----------------解决方案--------------------------------------------------------
程序代码:
#include <stdio.h>
int k;
void fun(int n)
{
while(n%k)k++;
if(n/k!=1){
printf("%d*",k);
fun(n/k);
}
else{
printf("%d\n",k);
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
k=2;
printf("%d=",n);
fun(n);
}
}
int k;
void fun(int n)
{
while(n%k)k++;
if(n/k!=1){
printf("%d*",k);
fun(n/k);
}
else{
printf("%d\n",k);
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
k=2;
printf("%d=",n);
fun(n);
}
}
----------------解决方案--------------------------------------------------------
谢谢 谢谢
----------------解决方案--------------------------------------------------------