编写程序,然后以降序显示它的所有最小因子。 例如:如果整数为120,那显示的最小因子为5、3、2、2、2。

importjava.util.Scanner;publicclassTest209{publicstaticvoidsort(int[]a){inti,j,k,temp... import java.util.Scanner;
public class Test209 {
public static void sort(int[]a){
int i,j,k,temp;
for(i=0;i<a.length;i++){
k=i;
for(j=i+1;j<a.length;j++){
if(a[j]>a[k])k=j;
temp=a[i];
a[i]=a[k];
a[k]=temp;

}
}
}
public static void main(String args[]){
Scanner in =new Scanner(System.in);
System.out.print("请输入一个整数:");
int n=in.nextInt();
int i=2;
int[]b=null;
int count=0;
while(n>1){
if(n%i==0){
n=n/i;count++;
b=new int[count];
b[count-1]=i;}
else i++;
}
sort(b);
int j;
for(j=0;j<b.length;j++)
System.out.println("b["+j+"]"+"="+b[j]);
}

}

打印出来的结果是错误的。。如下:
请输入一个整数:120
b[0]=5
b[1]=0
b[2]=0
b[3]=0
b[4]=0
应该是count那里出了问题,应该是一个一个往里面赋值的,但是写不出来,求大神解答!其他应该没什么问题。
展开
 我来答
匿名用户
2014-06-08
展开全部
给各非重复数最小因子的例子(没2 2 2)
int 因子(2), 数(0), 输入数(0), 求因子(0), 记(0), 控制(0);
int 数位[100]{0}, 位(0);
std::cout << "输入求因子的整数:";
std::cin >> 输入数;
do
{
if (!(输入数 % 因子))
数位[数++] = 因子;
} while (++因子 < 输入数);
std::cout << "输出所有最小因子:";
do
{
因子 = 1; 求因子 = 0;
do
{
因子 *= 数位[求因子 + 记];
//std::cout << 数位[求因子 + 记] << " ";
if (因子 == 输入数)
{
控制 = 数;
break;
}
} while (++求因子 + 记 < 数);
记++;
//cout << endl;
} while (控制 < 数);
--记;
do
{
std::cout << 数位[记++] << " ";
} while (求因子--);
1015768572
2014-06-08 · TA获得超过223个赞
知道小有建树答主
回答量:345
采纳率:66%
帮助的人:157万
展开全部
只修改了main方法的内容

public static void main(String[] args) {

Scanner in = new Scanner(System.in);
System.out.print("请输入一个整数:");
int n = in.nextInt();
int i = 2;
int[] b = new int[0];
int count = 0;
while (n > 1) {
if (n % i == 0) {
n = n / i;
count++;
b = java.util.Arrays.copyOf(b, count);//使用jdk1.6版本的才有
b[count - 1] = i;
} else
i++;
}
sort(b);
int j;
for (j = 0; j < b.length; j++){
System.out.println("b[" + j + "]" + "=" + b[j]);
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式