page0902未完成

时间:2023-03-09 22:57:59
page0902未完成
/**
* @author:(LiberHome)
* @date:Created in 2019/3/1 23:14
* @description:
* @version:$
*/
import java.util.Arrays;
/*设计一个程序,输出递增序列前100个数字,A满足
* 1在其中
* 如果x在其中,那么2x,3x也在其中
* 除此之外没有别的数*/
/*也就是说,这些数字里面存在的是1,
* 以及任何已存在数字的两倍
* 以及任何已经存在的数字的3倍*/
/* ~~*************************************************************~*/
/*巨汗~上面的思路完全写不出来程序啊~ 下面这个思路要记住哦~~~~*/ /*简单,从1开始将自然数逐个判断是否加入列表,判断逻辑是 3,对于3同理
4. 否则i不属于列表
5. 列表中要素个数达到n时退出循环*/
public class page0902 {
public static void main(String[] args) {
arr100();
} private static void arr100() {
int[] arr = new int[100];
/*1. 1属于列表,加入*/
arr[0]=1;
int j=1;
/*2. 对于i>1,若i%2==0 && i/2属于列表,i也属于列表,加入*/
for (int i = 1; i <10 ; i++) {
if (j%2==0&&contains(i,arr)){
arr[i]=j++;
}else if (j%3==0&& contains(i,arr)){
arr[i]=j++;
}
else {
j++;
i--;
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(" "+arr[i]);
}
} private static boolean contains(int i,int arrs[]) {
/*自己写一个实现判断数组中是否存在该元素的方法*/
/*里一个flag*/
int flag=0;
for (int j = 0; j < 100; j++) {
if (i/2==arrs[j]){
flag++;
break;
}
}
for (int j = 0; j < 100; j++) {
if (j/3==arrs[j]){
flag++;
break;
}
}
if (flag==2){
return true;
}
return false;
}
}