编写程序,然后以降序显示它的所有最小因子。 例如:如果整数为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那里出了问题,应该是一个一个往里面赋值的,但是写不出来,求大神解答!其他应该没什么问题。 展开
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那里出了问题,应该是一个一个往里面赋值的,但是写不出来,求大神解答!其他应该没什么问题。 展开
2个回答
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 (求因子--);
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 (求因子--);
展开全部
只修改了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]);
}
}
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]);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询