C语言,输入一个正整数,按由大到小的顺序输出它的所有质数的因子(如180=5*3*3*2*2)

样例输入180样例输出53322... 样例输入
180 样例输出
5 3 3 2 2
展开
 我来答
Negamax
2012-04-15 · TA获得超过2723个赞
知道小有建树答主
回答量:656
采纳率:100%
帮助的人:292万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int prime(int y)
{
int i;
if(y==1) return 0;
if(y==2) return 1;
for(i=2;i<y;i++)
{
if(y%i==0)
return 0;
}
return 1;
}

main()
{
int a,i;
scanf("%d",&a);
for(i=a;i>1;i--)
{
if(a%i==0&&prime(i)==1)
{
a=a/i;
printf(" %d " ,i);
i++;
}
else
continue;
}
printf("\n");
system("pause");
}

测试结果:
600
5 5 3 2 2 2
请按任意键继续. . .
云端少年百
2012-04-15 · TA获得超过112个赞
知道答主
回答量:182
采纳率:100%
帮助的人:64.8万
展开全部
i等于2开始,用180取余i,如果等于零,就输出而且继续对i取余同时180变成除以i的值,如果不等于零i加加,直到180那个变量为零时结束,不过这样输出是22335,你把这个修改成递归就行了
追问
我郁闷就是我不会从大到小,只会从小到大。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoalyg
2012-04-15 · TA获得超过4178个赞
知道大有可为答主
回答量:2356
采纳率:100%
帮助的人:2384万
展开全部
/*
180 = 5×3×3×2×2
181 =
182 = 13×7×2
183 = 61×3
184 = 23×2×2×2
185 = 37×5
186 = 31×3×2
187 = 17×11
188 = 47×2×2
189 = 7×3×3×3
190 = 19×5×2
191 =
192 = 3×2×2×2×2×2×2
193 =
194 = 97×2
195 = 13×5×3
196 = 7×7×2×2
197 =
198 = 11×3×3×2
199 =
200 = 5×5×2×2×2
Press any key to continue
*/
#include <stdio.h>
#include <math.h>

int isPrime(int n) {
int flag = 1,i;
if(n <= 1) return 0;
if((n == 2) || (n == 3)) return 1;
for(i = 2;i <= sqrt(n) && flag == 1;i++)
if(n%i == 0) flag = 0;
return(flag);
}

void dissociation(unsigned num) {
unsigned long i;
int b = 0;
printf("%3lu = ", num);
for(i = num/2;i > 1;i--) {
if((num % i == 0) && (isPrime(i))){
num /= i;
if(b == 1) printf("×%lu",i);
else {
printf("%lu",i);
b = 1;
}
i++;
}
}
}

int main() {
unsigned i;
for(i = 180;i <= 200;i++) {
dissociation(i);
printf("\n");
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yegao
2012-04-15 · TA获得超过1154个赞
知道小有建树答主
回答量:533
采纳率:66%
帮助的人:380万
展开全部
#include <stdio.h>
#include <math.h>
bool prim(int n)
{
if(n <= 1)
return false;//不是素数
int i;
int m = int(sqrt(n));//
for(i = 2;i<=m;i++)
if(n % i == 0)//有没有能整除的
return false;
return true;
}
void main()
{
int i;
int a=2;
int b;
scanf("%d",&b);//输入b
for(i = a;i <= b;i++)
{
if(prim(i))
{
printf("%d ",i);
}
}}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式