面试官提问:如果要你编写程序计算1~10000之间的和或者打印1-10000之间的素数,怎么写该程序?
思路:首先编译一个方法,将1-10000每个数放到数组里面,然后通过java的不定参数的方法(多参数方法)进行求和,得到结果;至于素数的话,将1-10000的数组作为sushu( )方法的参数,在sushu方法里面在进行循环判断每一个数是否符合素数,符合则append成为一条字符串返回,然后再解析该字符串得到素数数组,然后循环打印即可
1 . 不定参数求和
public static int add(int... list) {
int sum = 0;
for (int i : list) {
sum += i;
}
return sum;
}
public static int add_01(int a, int... list) {
int sum = 0;
for (int i : list) {
if (i >= a) {
sum += i;
}
}
if(a>list[list.length-1]){
return -1;
}
return sum;
}
但是别忘了,你这个list是1~10000,难道你要这样写 :int[] i = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9一直写到10000 }; ?
于是我们可以编写一个方法来把1-10000每个数字塞到数组里面就可以了
public static String[] append(int start, int end) {
StringBuilder sb = new StringBuilder();
int k = start;
for(int i=0;i<(end-start+1);i++){
if(k<=end){
sb.append(k+":");
k++;
}
}
//System.out.println(sb.toString());
return sb.toString().split(":");
}
完整的测试代码如下:
public class MultiArges {
public static void main(String[] args) {
//int[] i = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
String[] str = append(1,100);
int[] arr = new int[str.length];
for(int i=0;i<str.length;i++){
arr[i] = Integer.parseInt(str[i]);
}
System.out.println("sum :"+add(1,2,3));
System.out.println("sum :"+add(1,2,3,4,5));
System.out.println("sum :"+add(arr));
for(int i=0;i<sushu(arr).length;i++){
System.out.print(sushu(arr)[i]+" ");
}
}
public static int add(int... list) {
int sum = 0;
for (int i : list) {
sum += i;
}
return sum;
}
public static int add_01(int a, int... list) {
int sum = 0;
for (int i : list) {
if (i >= a) {
sum += i;
}
}
if(a>list[list.length-1]){
return -1;
}
return sum;
}
public static String[] append(int start, int end) {
StringBuilder sb = new StringBuilder();
int k = start;
for(int i=0;i<(end-start+1);i++){
if(k<=end){
sb.append(k+":");
k++;
}
}
//System.out.println(sb.toString());
return sb.toString().split(":");
}
public static String[] sushu(int... list) {
StringBuilder sb = new StringBuilder("");
for (int i = 0; i < list.length; i++) {
int k = 0;
if(list[i]>=0){
if(list[i]==0||list[i] == 1){
k = -1;
}else if (list[i] == 2) {
k = 0;
}else if (list[i] % 2 != 0) {
for (int j = 2; j < list[i] / 2; j++) {
if (list[i] % j == 0) {
k ++;
}
}
} else {
k = -1;
}
}else{
k = -1;
}
//System.out.println(arr[i]+" "+k);
if (k == 0) {
sb.append(list[i] + ":");
}
}
//System.out.println(sb.toString());
return sb.toString().split(":");
}
}
希望可以帮到您。