题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )最后一个数后面也要有空格
详细描述:
函数接口说明:public String getResult(long ulDataInput)
输入参数:long ulDataInput:输入的正整数
返回值:String
代码片段:
public class Prime {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
long datainput = in.nextInt();
String result = getResult(datainput);
System.out.println(result);
}
public static String getResult(long datainput) {
StringBuffer res = new StringBuffer();
long number = datainput;
for(int i=2; i <= Math.sqrt(number); i++){
while(number>1){
if(number%i==0){
res.append(i);
res.append(" ");
number=number/i;
}
else break;
}
}
if (number != 1) {
//res.append(" ");
res.append(number);
}
String result = res.toString();
return result;
}
}
知识点:
StringBuffer的常用方法:
主要偏重于对于字符串的变化,例如追加、插入和删除等。
a、append方法:
追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。
StringBuffer sb = new StringBuffer(“abc”);
sb.append(true);
则对象sb的值将变成”abctrue”。
使用该方法进行字符串的连接,将比String更加节约内容,例如应用于数据库SQL语句的连接,例如:
StringBuffer sb = new StringBuffer();
String user = “test”;
String pwd = “123”;
sb.append(“select * from userInfo where username=“)
.append(user)
.append(“ and pwd=”)
.append(pwd);
这样对象sb的值就是字符串“select * from userInfo where username=test and pwd=123”。
b、deleteCharAt方法:
删除指定位置的字符,然后将剩余的内容形成新的字符串。
StringBuffer sb = new StringBuffer(“Test”);
sb. deleteCharAt(1);
删除字符串对象sb中索引值为1的字符,也就是删除第二个字符,剩余的内容组成一个新的字符串。所以对象sb的值变为”Tst”。
删除指定区间以内的所有字符,包含start,不包含end索引值的区间。
StringBuffer sb = new StringBuffer(“TestString”);
sb. delete (1,4);
删除索引值1(包括)到索引值4(不包括)之间的所有字符,剩余的字符形成新的字符串。则对象sb的值是”TString”。
c、insert方法
在StringBuffer对象中插入内容,然后形成新的字符串。
StringBuffer sb = new StringBuffer(“TestString”);
sb.insert(4,false);
在对象sb的索引值4的位置插入false值,形成新的字符串,则执行以后对象sb的值是”TestfalseString”。
d、reverse方法
将StringBuffer对象中的内容反转,然后形成新的字符串。
StringBuffer sb = new StringBuffer(“abc”);
sb.reverse();
经过反转以后,对象sb中的内容将变为”cba”。
e、setCharAt方法
修改对象中索引值为index位置的字符为新的字符ch。
StringBuffer sb = new StringBuffer(“abc”);
sb.setCharAt(1,’D’);
则对象sb的值将变成”aDc”。
f、trimToSize方法
将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。