| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3011 人关注过本帖, 1 人收藏
标题:题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
只看楼主 加入收藏
tuesday2
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-4-29
收藏(1)
 问题点数:0 回复次数:10 
题目:将一个正整数分解质因数。例如:输入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-01 19:22
tuesday2
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-4-29
收藏
得分:0 
运行结果是:输入90,num=2*3*3*,   输入100,num=2*2*5*,   总是最后一个数输不出来,请指点。
2007-10-01 19:37
xhtang
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-10-1
收藏
得分:0 
你的程序有问题
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-02 14:44
一陀屎
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-10-2
收藏
得分:0 

老虎不发威,你当我病猫
2007-10-02 14:57
lm168
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-9-16
收藏
得分:0 
看不懂
无法帮助了

2007-10-02 15:57
finalken
Rank: 2
等 级:论坛游民
威 望:1
帖 子:30
专家分:94
注 册:2007-10-2
收藏
得分:0 
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-02 16:45
南海十三郎
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-10-2
收藏
得分:0 
不错啊,哈哈
2007-10-03 11:03
coding
Rank: 1
等 级:新手上路
威 望:1
帖 子:60
专家分:0
注 册:2007-9-30
收藏
得分:0 
回复:(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-03 15:31
tuesday2
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-4-29
收藏
得分:0 

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

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-04 00:08
tuesday2
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-4-29
收藏
得分:0 

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

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-04 00:14
快速回复:题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
数据加载中...
 
   



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

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