| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 560 人关注过本帖
标题:帮我看一下该如何写?
只看楼主 加入收藏
l1294315957
Rank: 1
等 级:新手上路
帖 子:15
专家分:2
注 册:2015-3-12
结帖率:80%
收藏
已结贴  问题点数:15 回复次数:6 
帮我看一下该如何写?
题:有计算机随机生成一个整数,对其分解质因数。例如生成的随机数为120,屏幕显示120=2*2*2*3*5。
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
main()
{
    int a,i,t,s;
    srand(time(0));
    a=rand();                   /*这里如何对a进行随机数赋值?
    printf("输出随机数:a=%d\n",a);
    t=a;
    for(i=2;i<=sqrt((float)t);)
    {
        if(t%i==0)
        {
            t=t/i;
            
            printf("");        /*如何处理输出语句,屏幕会出现题中的样子?
        }
        else i++;
    }
    getch();
}
搜索更多相关主题的帖子: include 计算机 质因数 如何 
2015-05-26 16:55
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:7 
//题:有计算机随机生成一个整数,对其分解质因数。例如生成的随机数为120,屏幕显示120=2*2*2*3*5。
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
int f(int n){
    int i;
    for(i=2;i<=sqrt(n);i++)
    if(n%i==0)return 0;
    return 1;
}
main(){
    int a,i,j=0,t,s;
    int b[80];
    srand(time(0));
   // a=rand();                   //这里如何对a进行随机数赋值?
    a=120;
    printf("输出随机数:a=%d\n",a);
    t=a;
    for(i=2;i<a;i++)
        if(f(i)&&t%i==0)while(t%i==0){b[j++]=i;t/=i;}        //如何处理输出语句,屏幕会出现题中的样子?
    printf("%d=",a);
    for(i=0;i<j-1;i++)printf("%d*",b[i]);
    printf("%d",b[i]);
    getch();
}
收到的鲜花
  • as4691322as2015-05-29 17:14 送鲜花  1朵   附言:我很赞同

剑栈风樯各苦辛,别时冰雪到时春
2015-05-26 17:13
l1294315957
Rank: 1
等 级:新手上路
帖 子:15
专家分:2
注 册:2015-3-12
收藏
得分:0 
回复 2楼 林月儿
看起来好复杂啊,有没有简单点的?还有现在不是很理解return0,return1.可以给我解释一下这两个的含义吗?
2015-05-26 17:37
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
好复杂,多了
int f(int n){
    int i;
    for(i=2;i<=sqrt(n);i++)
    if(n%i==0)return 0;
    return 1;
}判断是否是素数。。。0为false1为true
这里不多说了
for(i=2;i<a;i++)
        if(f(i)&&t%i==0)while(t%i==0){b[j++]=i;t/=i;}        //如何处理输出语句,屏幕会出现题中的样子?
也可以改成

for(i=2;i<a;i++)
        if(f(i)&&t%i==0)while(t%i==0){printf("%d*",i);t/=i;}        //如何处理输出语句,屏幕会出现题中的样子?
结果会多打印一个*
所以我费那事给你改成数组。。。
就加了两处代码。。。

剑栈风樯各苦辛,别时冰雪到时春
2015-05-26 17:42
jianda999
Rank: 2
等 级:论坛游民
帖 子:8
专家分:33
注 册:2009-5-25
收藏
得分:8 
没必要用数组吧?只需要分解质因素,又不是输出质因素的组合。
参考代码

*分解质因素*/
 
#include <stdio.h>
void main(void) {
    int n,i=2;
    printf("Input an integer: ");
    scanf("%d",&n);
    printf("%d=",n);
   
    while (n>1)
    {
        while (n%i==0)
        {
            n/=i;
            if (n>1) printf("%d*",i);
            else printf("%d\n",i);
        }
        i++;
    }
}
2015-05-26 22:08
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
楼上说的对
#include<stdio.h>
void f(int n,int i,int j){
        if(i<j){
            n%i==0?n/i>i?printf("%d*",i): printf("%d",i),n/=i:i++;
            n%i==0?f(n,i,j): f(n,i+1,j) ;
        }
}
main(){
        int n=120;
        f(n,2,n);
}

[ 本帖最后由 林月儿 于 2015-5-27 06:43 编辑 ]

剑栈风樯各苦辛,别时冰雪到时春
2015-05-26 23:22
l1294315957
Rank: 1
等 级:新手上路
帖 子:15
专家分:2
注 册:2015-3-12
收藏
得分:0 
回复 5楼 jianda999
明白后面怎么输出了。还有,题中要求,计算机产生一个随机数(随机数没有给定范围),之后对这个随机数分解质因数。那么怎么取到这个随机数,并且将它输出到屏幕上呢?
2015-05-29 12:42
快速回复:帮我看一下该如何写?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.074971 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved