头一次写博客,有点乱.....
zhepackage java50;
import java.util.*;
/*
* 古堡算式
福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:
ABCDE * ? = EDCBA
他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把 ABCDE 所代表的数字写出来。
答案写在“解答.txt”中,不要写在这里!
*/
public class A1 {
public static void main(String[] args)
{
for(int i=10000;i<=99999;i++)
{
int a=i/10000;
int b=(i/1000)%10;
int c=(i/100)%10;
int d=(i%100)/10;
int e=i%10;
if(a==b||a==c||a==d||a==e||b==c||b==d||b==e||c==d||c==e||d==e) {continue;}
int num=e*10000+d*1000+c*100+b*10+a;
if(i%num==0&&(i/num)<10) System.out.println("ABCDE=:"+i+"*"+i/num+"="+num);
}
}
}
这题刚开始做的时候忘了abcde是不同的字母,巧在直接判断取模是否为零,我第一次想的是直接带公式就很繁
package java50;
/*打印水仙花数,所谓水仙花数是一个三位数,其各位的数字立方和等于该数本身
* (感觉大体思路就和前面的找素数差不多)*/
public class isNarcissisticNum {
public static void main(String[] args)
{
for(int i=100;i<1000;i++) {
if(isnarcissus(i)) System.out.println(i);
}
}
public static boolean isnarcissus(int num) {
int a=num/100;
int b=(num%100)/10;
int c=num%10;
if(num==a*a*a+b*b*b+c*c*c) return true;
else return false;
}
}经典题啦,后面的找素数感觉也和水仙花差不多....素数范围可以缩小到Math.sqrt(number)
package java50;
/*判断101-200之间有多少个素数,并输出所有素数*/
public class isPrime {
public static void main(String[] args)
{
for(int i=101;i<201;i++) {
if(isprime(i)) {System.out.println(i);}
}
}
public static boolean isprime(int num) {
for(int j=2;j<Math.sqrt(num);j++)
{
if(num%j==0) return false;
}
return true;
}
}找素数的拓展
package java50;
import java.util.*;
/*将一个正整数分解质因数,例如输入90,打印出90=2*3*3*5
* (这题用到递归,需要一个isPrime函数判断是否为素数,和一个分解质因数的函数)*/
public class PrimePart {
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
System.out.println("请输入一个大于3的正整数:");
int number=in.nextInt();
System.out.println(number+"=");
factor(number);
}
public static void factor(int num)
{
for(int i=2;i<Math.sqrt(num);i++)
{
if(num%i==0) System.out.println(i+"*");
if(isPrime(num/i)) {
System.out.println(num/i);
}
else
factor(num/i);
break;
}
}
public static boolean isPrime(int num)
{
for(int j=2;j<Math.sqrt(num);j++)
{
if(num%j==0) return false;
}
return true;
}
}找规律(兔子数)
package java50;
import java.util.*;
/*
* 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
* 假如兔子都不死,问每个月的兔子对数为多少?
* 观察规律发现an=an-1+an-2;(先看一对一对的兔子)
* */
public class rabbit {
public static void main(String[] args)
{
int[] array=new int[1000];
array[0]=1; array[1]=1;
Scanner in=new Scanner(System.in);
System.out.println("请输入第几个月");
int month=in.nextInt();
if(month==1||month==2) System.out.println("有1对兔子");
else {
for(int i=2;i<month;i++)
{
array[i]=array[i-1]+array[i-2];
}
System.out.println("一共有"+array[month-1]+"只兔子");
}
}
}
这篇博客是作者初次尝试写作,主要内容涉及Java基础练习,包括判断数字是否为素数的方法,以及通过数学规律探讨兔子数列问题。作者提到在解决题目时的思考过程,如将素数范围限制到Math.sqrt(number)内。
440

被折叠的 条评论
为什么被折叠?



