c语言 题目 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5 找错 帮帮忙啊
我的代码#include<stdio.h>intprime(intn){inti=2;for(i=2;i<n;i++)if(n%i==0){return0;break;}...
我的代码
#include<stdio.h>
int prime(int n)
{
int i=2;
for(i=2;i<n;i++)
if(n%i==0)
{
return 0;
break;
}
if(i==n)
return 1;
}
int main()
{
int Number,number,i,count=0,a[100]={0};
printf("please input number:");
scanf("%d",&number);
Number=number;
if(!prime(number))
{
for(i=number-1;i>=2;i--)
{
if(prime(i)&&number%i==0)
{
a[count]=i;
number=number/i;
count++;
}
}
for(i=count-1;i>=1;i--)
printf("%d*",a[i]);
printf("%d\n",a[0]);
}
else
printf("%d是一个素数",Number);
return 0;
}
主要思路
自编函数prime()
判断整数是否是素数
然后循环找出最大质因数
我估计是我循环的条件弄错了 求解答 展开
#include<stdio.h>
int prime(int n)
{
int i=2;
for(i=2;i<n;i++)
if(n%i==0)
{
return 0;
break;
}
if(i==n)
return 1;
}
int main()
{
int Number,number,i,count=0,a[100]={0};
printf("please input number:");
scanf("%d",&number);
Number=number;
if(!prime(number))
{
for(i=number-1;i>=2;i--)
{
if(prime(i)&&number%i==0)
{
a[count]=i;
number=number/i;
count++;
}
}
for(i=count-1;i>=1;i--)
printf("%d*",a[i]);
printf("%d\n",a[0]);
}
else
printf("%d是一个素数",Number);
return 0;
}
主要思路
自编函数prime()
判断整数是否是素数
然后循环找出最大质因数
我估计是我循环的条件弄错了 求解答 展开
展开全部
一个正整数n用2去除,如果能整除(n % 2 == 0),则必有质因数2,去除因子2(n /= 2),如此反复,直到不能被整除;接下来用3去除,如果能整除(n % 3 == 0),则必有质因数3,去除因子3(n /= 3),如此反复,直到不能被整除;偶数必有质因子2,上面已经处理过了,因此不再满足n % 4 == 0;接下来用5去除,如果能整除(n % 5 == 0),则必有质因数5,去除因子5(n /= 5),如此反复,直到不能被整除;......,如此这般循环下去,直至这个数小于1,以上过程,就是质因子分解过程。
展开全部
不需要找质数,你的代码太复杂了
#include <stdio.h>
int main()
{
int i,n;
//正整数分解质因数
scanf("%d", &n);
printf("%d=",n );
i=2;
while( n > i ) //从2开始找最小因子
{
if ( n%i== 0 )
{
printf("%d*", i );
n /= i ; //n缩小i倍后,再次检查i是否是因数
}
else
i++ ;
}
printf("%d\n", i );
return 0;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询