小学零碎算法
import java.util.Random;
public class arithmetic {
public static void main(String[] args) {
}
public static int taozi(int n) {
int num = 1;
for (int i = 1; i < n; i ++) {
num = 2 * (num + 1);
}
return num;
}
public static int guilv(int n) {
int num = 0;
for (int i = 0; i < n; i ++) {
num += i;
}
return num;
}
public static int xunhuan(int num) {//优先选用循环,而不选用递归,因为递归太占cpu 而且层次大的可能递归益处!
if (num < 3) return 1;
int a = 1, b = 1;
for (int i = 3; i < num; i ++) {
b = a + b;
a = b - a;
}
return a + b;
}
public static int digui(int num) {
if (num < 3) return 1;
return digui(num -1) + digui(num-2);
}
public static void jiaotucaixiang(int num) {
int times = 0;
do {
times ++;
if (num % 2 == 0) {
num = num / 2;
} else {
num = 3 * num + 1;
}
} while (num != 1);
System.out.println("计算次数:" + times);
}
//优化后的判断是否是质数
public static void zhishu(int num) {
for (int i = 2; i <= Math.sqrt(num); i ++) {//平方根之前没有找到约数,那么以后肯定也没有
if (num % i == 0) {
System.out.println("不是质数!");
return ;
}
}
System.out.println("是质数!");
}
public static void tuxing2() {
for (int rows = 1; rows <= 5; rows ++) {//rows 控制行数
for (int col1 = 0; col1 < 5 - rows; col1 ++) {//列分成两部分,一部分打印空格,一部分打印*
System.out.print(" ");
}
for (int col2 = 0; col2 < 2 * rows - 1; col2 ++) {
System.out.print("*");
}
System.out.println();
}
}
public static void tuxing1() {
for (int rows = 1; rows <= 5; rows ++) {//rows 控制行数
for (int col1 = 0; col1 < 5 - rows; col1 ++) {//列分成两部分,一部分打印空格,一部分打印*
System.out.print(" ");
}
for (int col2 = 0; col2 < rows; col2 ++) {
System.out.print("*");
}
System.out.println();
}
}
//打印所有的水仙花数,个位,十位,百位分别的立方和像加等于自身!!
public static void shuiXian() {
int a , b, c;
for (int i = 100; i < 1000; i ++) {
a = i / 100; //百位
b = (i / 10) % 10; //十位
c = i % 10; //个位
if (a * a * a + b * b * b + c * c *c == i) {
System.out.println(i);
}
}
}
//喝汽水,1000瓶,每3个空瓶换一瓶,一共可以 喝多少瓶
public static void he() {
int full = 1000;
int num = 0;
int empty = 0;
while (full > 0) {
num += full;
empty += full;
full = empty / 3;
empty -= full * 3;
}
System.out.println("一共喝了" + num + "瓶");
System.out.println("剩下空瓶字个数:" + empty);
}
//百元 买百鸡问题
//描述:每只母鸡3元,每只公鸡4元,每只小鸡0.5元,如果花100元钱买100只鸡,请问有哪些可能?说明:每种鸡的数量都可以为零。
public static void buy() {
int count = 0;
for (int i = 0; i <= (100 / 3); i ++) {//i是母鸡数量
for (int j = 0; j <= ((100 - 3 * i) / 4); i ++) {//j是公鸡数量
int k = 100 - i - j;//k是小鸡数量
if (3 * i + 4 * j + k * 0.5 == 100) {
count ++;
System.out.println("方案 " + count + ":母鸡 " + i + ",公鸡 " + j + ",小鸡 " + k);
}
}
}
if (count == 0) {
System.out.println("没有方案可行!");
}
}
//求两个数的最小公倍数
public static void MinGongbeishu(int a, int b) {
if (a == 0 || b == 0) {
System.out.println("最小公倍数不存在,参数不能是 0");
return;
}
int temp = a > b ? a : b;
for (int i = temp; ; i ++) {
if (i % a == 0 && i % b == 0) {
System.out.println(a + "和" + b + "的最小公倍数是:" + i);
break;
}
}
}
//求两个自然数的最大公约数
public static void MaxYueshu(int a, int b) { //从最大 开始找,这是一个优化的找公约数算法
if (a ==0 || b ==0) {
System.out.println("最大公约数是:1");
return;
}
int temp = a < b ? a : b;
for (int i = temp; i > 0; i --) {
if (a % i == 0 && b % i == 0) {
System.out.println(a + "和" + b + "最大公约数是:" + i);
break;
}
}
}
}