| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 410 人关注过本帖
标题:题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
收藏  订阅  推荐  打印 
tuesday2
Rank: 1
等级:新手上路
帖子:7
积分:170
注册:2007-4-29
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

import javax.swing.*;
public class Zhi
{
public static void main(String args[])
{
String input=JOptionPane.showInputDialog("请输入正整数:");
int num=Integer.parseInt(input);//输入的字符串转化为整数

if(num==1) //输入为1,直接输出
{
System.out.print("num=1");
}
else
{
System.out.print("num=");
for(int i=2;i<num;i++)
{
if(num%i==0)
{
System.out.print(i);
num=num/i;
if(num!=1)
{
System.out.print("*");
}
i--; //防止它只除一次质因数
}
if(num==1) //整除完后,值为1跳出
{
break;
}
}
}
System.exit(0); //输入的图形框结束语句
}
}


运行的结果:比如输入90,num=2*2*5* 希望朋友们给指点哈,哪一步出了问题?
搜索更多相关主题的帖子: 质因数  整数  num  分解  
2007-10-1 19:22
tuesday2
Rank: 1
等级:新手上路
帖子:7
积分:170
注册:2007-4-29

运行结果是:输入90,num=2*3*3*,   输入100,num=2*2*5*,   总是最后一个数输不出来,请指点。
2007-10-1 19:37
xhtang
Rank: 2
等级:注册会员
帖子:50
积分:600
注册:2007-10-1

你的程序有问题
for(int i=2;i<num;i++)
num=num/i;
当i=5时;
num=5;
怎么还有输出来呢;

你可以改成
for(int i=2;i<num+1;i++)

用while来判断也可以
while(num%i==0)
{
System.out.print(i);
num=num/i;
if(num!=1)
{
System.out.print("*");
}

}

帮助别人是我的快乐! 别人帮我,我心存感激!
2007-10-2 14:44
一陀屎
Rank: 1
等级:新手上路
帖子:19
积分:290
注册:2007-10-2


老虎不发威,你当我病猫
2007-10-2 14:57
lm168
Rank: 1
等级:新手上路
帖子:11
积分:210
注册:2007-9-16

看不懂
无法帮助了

2007-10-2 15:57
finalken
Rank: 1
等级:新手上路
帖子:11
积分:210
注册:2007-10-2

import javax.swing.*;
public class Zhi
{
public static void main(String args[])
{
String input=JOptionPane.showInputDialog("请输入正整数:");
int num=Integer.parseInt(input);//输入的字符串转化为整数

if(num==1) //输入为1,直接输出
{
System.out.print("num=1");
}
else
{
System.out.print("num=");
for(int i=2;i<num;i++) //3楼的改法是对的,不过建议你在跳出循环以后再单独输出num会好点这样可以避免多一个'*'
{
if(num%i==0)
{
System.out.print(i);
num=num/i;
if(num!=1)
{
System.out.print("*");
}
i--; //防止它只除一次质因数
}
if(num==1) //整除完后,值为1跳出 //这里完全没必要加跳出,for的跳出条件已经很好了
{
break;
}
}
}
System.exit(0); //输入的图形框结束语句
}
}

[此贴子已经被作者于2007-10-2 16:46:13编辑过]

2007-10-2 16:45
南海十三郎
Rank: 1
等级:新手上路
帖子:9
积分:190
注册:2007-10-2

不错啊,哈哈
2007-10-3 11:03
coding
Rank: 2
等级:注册会员
威望:1
帖子:60
积分:712
注册:2007-9-30
回复:(tuesday2)题目:将一个正整数分解质因数。例...

我给出一个C语言版本的算法!

#include <stdio.h>
#include <math.h>
void main()
{
int ndata;
int nnum;
int nend;
int nterm;
int ncount=0;
int narray[30];
scanf("input your number:",&ndata);
nend=(int)sqrt((float)ndata);
nterm=2;
do
{
if (ndata%nterm==0)
{
ndata=ndata/nterm;
nend=(int)sqrt((float)ndata);
narray[ncount]=nterm;
ncount++;
}
nterm++;
}while(nterm<=nend);

narray[ncount]=ndata;
for(nterm=0;nterm<=ncount;nterm++)
printf("%d ",narray[nterm]
}




2007-10-3 15:31
tuesday2
Rank: 1
等级:新手上路
帖子:7
积分:170
注册:2007-4-29

首先,感谢三楼,多谢你的帮助。

import javax.swing.*;
public class Zhi
{
public static void main(String args[])
{
String input=JOptionPane.showInputDialog("请输入正整数:");
int num=Integer.parseInt(input);//输入的字符串转化为整数

if(num==1) //输入为1,直接输出
{
System.out.print("num=1");
}
else
{
System.out.print("num=");
for(int i=2;i<num+1;i++)
{
if(num%i==0)
{
System.out.print(i);
num=num/i;
if(num!=1)
{
System.out.print("*");
}
i--; //防止它只除一次质因数
}
if(num==1) //整除完后,值为1跳出
{
break;
}
}
}
System.exit(0); //输入的图形框结束语句
}
}

2007-10-4 00:08
tuesday2
Rank: 1
等级:新手上路
帖子:7
积分:170
注册:2007-4-29

这一个代码更加简洁一点。(此三楼的智慧,多谢)

import javax.swing.JOptionPane;
public class Zhi2
{
public static void main(String args[])
{
String input=JOptionPane.showInputDialog("请输入正整数:");
int num=Integer.parseInt(input);//输入的字符串转化为整数

if(num==1) //输入为1,直接输出
{
System.out.print("num=1");
}
else
{
System.out.print("num=");
for(int i=2;i<num+1;i++)
{
while(num%i==0)
{
System.out.print(i);
num=num/i;
if(num!=1)
{
System.out.print("*");
}
}
}
}
System.exit(0); //输入的图形框结束语句
}
}

2007-10-4 00:14
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.120569 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved