最近老师给我们好多关于逻辑的题目,感觉挺有意思的,今天就把这些整理一下,和大家分享分享,希望也能给你们带点乐趣!
@:FIRST
第一个是输出100以内的质数,这个算法由于没有具体的公式,当时真是郁闷坏了,不过最终还是做出来了,而且老师告诉我们这道题也被很多公司当做面试题经常会被考到,所以让我们一定要记住。
/**
* 功能:输出100以内所有质数
* author:queyr
* @param:
* time:2018年8月21日下午3:22:51
*/
@Test
public void test_01() {
boolean flag = false;
for (int i = 2; i <= 100; i++) {
flag = false;
for (int j = 2; j < i; j++) {
if(i%j==0) {
flag = true;
}
}
if(!flag) {
System.out.print(i+" ");
}
}
}
输出展示:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
@:SECOND
下面这个是用冒泡排序对一个无序数组进行排序的题目,冒泡排序其实对编程的人员来说并不陌生,但是突然让你把这个写出来,还是有点难度的,因为现在的工具太过方便,而导致我们对一些过于底层的不去了解,希望下面这个也能对大家有一些帮助。
/**
* 功能:冒泡排序
* author:queyr
* @param:
* time:2018年8月21日下午3:46:33
*/
@Test
public void test_02() {
int[] nums = new int[] {2,5,12,65,12,8,46};
int temp = 0;
//利用双重循环分别进行比较
for (int i = 0; i < nums.length; i++) {
for (int j = i; j < nums.length; j++) {
if(nums[i]>nums[j]) {
temp = nums[i];
nums[i]=nums[j];
nums[j]=temp;
}
}
}
//将排序之后的数据打印输出
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i]+" ");
}
}
结果展示:
2 5 8 12 12 46 65
@THIRD
其实还有好多有意思的题目,但是写出来太多会有点无聊,所以最后在和大家分享一个鸡兔同笼的题目,说在一个笼子里鸡兔一窝工48个头,156个脚,让我们用编程的知识,分辨出鸡兔的搭配有几种?其实这样的题如果用数学的话很简单,设两个未知数,比如鸡兔的个数分别为X,Y那么我们可以得到 X+Y=48;
2X*4Y=156; 解一下就很容易就得出来了。如果用编程的话,其实也很简单。如下:
/**
* 功能:鸡兔同笼
* author:queyr
* @param:
* time:2018年8月21日下午4:01:14
*/
@Test
public void test_03() {
for (int i = 0; i <= 48; i++) {
for (int j = 0; j <= 48; j++) {
if(i*2+j*4==156) {
System.out.println("鸡的个数:"+i+"\t兔的个数"+j);
}
}
}
}
可能由于设的值的原因导致有很多中可能,但是都是正确的,这还是没毛病的!
“`
鸡的个数:0 兔的个数39
鸡的个数:2 兔的个数38
鸡的个数:4 兔的个数37
鸡的个数:6 兔的个数36
鸡的个数:8 兔的个数35
鸡的个数:10 兔的个数34
鸡的个数:12 兔的个数33
鸡的个数:14 兔的个数32
鸡的个数:16 兔的个数31
鸡的个数:18 兔的个数30
鸡的个数:20 兔的个数29
鸡的个数:22 兔的个数28
鸡的个数:24 兔的个数27
鸡的个数:26 兔的个数26
鸡的个数:28 兔的个数25
鸡的个数:30 兔的个数24
鸡的个数:32 兔的个数23
鸡的个数:34 兔的个数22
鸡的个数:36 兔的个数21
鸡的个数:38 兔的个数20
鸡的个数:40 兔的个数19
鸡的个数:42 兔的个数18
鸡的个数:44 兔的个数17
鸡的个数:46 兔的个数16
鸡的个数:48 兔的个数15
“
好了,今天就和大家分享到这里!下次再见!! -_- v -_-