| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 904 人关注过本帖
标题:[求助]一道编程题
只看楼主 加入收藏
frog555
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-11-9
收藏
 问题点数:0 回复次数:10 
[求助]一道编程题

/* 函数fun的功能是:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。
例如,若输入整数:3410,则应输出:2、5、11、31。
void fun(int k)
*/

#include <stdio.h>
#include <math.h>
void fun(int k);
void main(void)
{
int k;
printf("Input k:");
scanf("%d",&k);
fun(k);
}


void fun(int k)
{
int i,j,m,n;
m=k/2; /* 只用循环到k/2即可 */
for(i=2;i<=m;i++)
{
if(k%i==0) /* 前提是i能被k整除 */
{
n=(int)(sqrt(i));
for(j=2;j<=n;j++) /* 判断i是不是素数 */
{
if(i%j==0) break;
if(j>n) printf("%5d",i); /* 若是素数则输出i */
}
}
}
printf("\n");
}


不知道错在哪````语法是对的````
帮我改改谢谢```学习学习

搜索更多相关主题的帖子: 编程 include 
2007-01-13 22:59
myisgood
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2006-12-25
收藏
得分:0 
要睡觉了 大概看了以下 ~
给你分析一了一下
你自己看吧~~ 比如:10
k=10 i=2 m=5 n=1
k=10 i=3 m=5 n=1
k=10 i=4 m=5 n=2
k=10 i=5 m=5 n=2
到最后也没有打印出 一个数字出来~
你的思路是好的
算法有带改进~~~`
2007-01-13 23:10
frog555
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-11-9
收藏
得分:0 
是呀``啥都没打印出来是什么原因呢呵呵````
好的你去睡吧88``
2007-01-13 23:16
love_hcy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
收藏
得分:0 
不用判斷素數。自己想想爲什麽。

#include <stdio.h>
void fun(int);
void main(void)
{
int k;
printf("Input k:");
scanf("%d",&k);
fun(k);
}

void fun(int k)
{
int i;

for(i=2;i<=k;i++)
if(k%i==0){k=k/i;printf("%d ",i);i=2;}
}

原来时间真的会不够。原來一切真的都已經來不及。
2007-01-14 00:01
myisgood
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2006-12-25
收藏
得分:0 

楼上的MM
他的问题不是这么简单~~
你看看你输入个 3140
得到的是
2,5,157 不是他要的那个~~ 你这个~~ 我知道的嘿嘿~~
你好聪明哦~
#include <stdio.h>
void fun(int);
void main(void)
{
int k;
printf("Input k:");
scanf("%d",&k);
fun(k);
}

void fun(int k)
{
int i;

for(i=2;i<=k;i++)
if(k%i==0){k=k/i;printf("%d ",i);i=2;}----------------i=2这是你的精华~呵呵~
}
楼主 没有办法~ 我解决不到了 要休息了 ~呵呵~

2007-01-14 00:17
love_hcy
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-12-24
收藏
得分:0 
樓上的帥哥。眼神不大好吧?
3410和3140看不清楚。。。。

原来时间真的会不够。原來一切真的都已經來不及。
2007-01-14 01:12
myisgood
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2006-12-25
收藏
得分:0 

哈哈~ 确实是哈~~ 主要是 眼神飞走里~~~在看楼上的漂亮MM(很少见MM编程的)
那我的这个也可以的!! 献丑了~
#include <stdio.h>
#include <math.h>
void fun(int mm);
void main(void)
{

int gg;
while(1)
{
printf("Input=:\n");
scanf("%d",&gg);
if ((gg>=2)&&(gg<=10000)) break;

}
fun(gg);
}

void fun(int mm)
{
int a=1;
while(1)
{
a++;
if ((mm%a)==0) {printf("%d\t",a);mm=mm/a;a=1;}
if (mm==1) return;

}

}

2007-01-14 02:18
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
int flag;
i=2;
while(n)
{
flag=1;
while(n&&n%i==0)
{
if(flag==1)
{
printf("%-3d",i);
}
flag=0;
n/=i;
}
i++;
}

倚天照海花无数,流水高山心自知。
2007-01-14 19:13
frog555
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-11-9
收藏
得分:0 
题目求的是质因数就一定要求素数的嘛```
否则就不是质因数了```
2007-01-15 20:29
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
其实是一样的.我这个有点类似于筛选法,如果这个除数是个合数,那它一定不能被当前更新过n值整除.
所以可以保证是素数.

倚天照海花无数,流水高山心自知。
2007-01-15 20:46
快速回复:[求助]一道编程题
数据加载中...
 
   



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

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