陆续收集一些简单算法的实现

本文算法均从网络中收集

/**
* <p>功能描述:求一个四位数,使它等于它的四个数字和的四次方</p>
*
* @param args
* @author 胡晓 <BR> kskr@qq.com <BR>
* 时间:2010-3-17 上午07:36:34 <BR>
*/
public static void main(String[] args) {
int a, b, c, d, e;
for (int i = 1000; i < 10000; i++) {
a = i % 10;
b = i / 10 % 10;
c = i / 100 % 10;
d = i / 1000;
e = a + b + c + d;
if (e * e * e * e == i) {
System.out.println("满足条件的数字:" + i);
}
}
}



/**
* <p>功能描述:满足这个条件的五位数,abcdef = a^5 + b^5 + c^5 + d^5 + e^5</p>
*
* @param args
* @author 胡晓 <BR> kskr@qq.com <BR>
* 时间:2010-3-17 上午07:46:32 <BR>
*/
public static void main(String[] args) {
int m, s, a, b, c, d, e;
// s = Integer.parseInt(args[0]);
s = 99999;
if (s >= 10000 && s <= 99999) {
System.out.println("小于该数的梅花数有:");
for (m = 10000; m < s; m++) {
a = m % 10;
b = m / 10 % 10;
c = m / 100 % 10;
d = m / 1000 % 10;
e = m / 10000;
if (m == a * a * a * a * a + b * b * b * b * b + c * c * c * c * c + d * d * d * d * d + e * e * e * e * e) {
System.out.println(m);
}
}
}
}



/**
* <p>功能描述:输出100内的素数</p>
*
* @param args
* @author 胡晓 <BR> kskr@qq.com <BR>
* 时间:2010-3-17 上午07:57:54 <BR>
*/
public static void main(String[] args) {
int s = 0;
int i;
for (i = 0; i <= 100; i++) {
int j;
for (j = 2; j <= i; j++) {
if (i % j == 0)
break;
}
if (i == j)
System.out.println(i);
}
}




public static void main(String[] args) {
System.out.println(isPrime(97));
}

/**
* <p>功能描述:判断是否是素数</p>
*
* @param n
* @return
* @author 胡晓 <BR> kskr@qq.com <BR>
* 时间:2010-3-17 上午08:02:56 <BR>
*/
public static boolean isPrime(int n) {
// filte negative, zero, one
if (1 >= n) {
return false;
}
// 2 is a prime, stop filter
if (2 == n) {
return true;
}
// filter evens
if (0 == n % 2) {
return false;
}
// go on filting...
for (int a = 3; a <= Math.sqrt(n); a += 2) {
if (0 == n % a) {
return false;
}
}
// the rest is all prime, stop filting
return true;
}



public static void main(String[] args) {
System.out.println(isPrime(97));
}

/**
* <p>功能描述:判断是否是素数</p>
*
* @param n
* @return
* @author 胡晓 <BR> kskr@qq.com <BR>
* 时间:2010-3-17 上午08:04:55 <BR>
*/
public static boolean isPrime(int n) {
for (int i = 2; i * i <= n; i++) {
if (n % i == 0)
return false;
}
return true;
}



public static void main(String[] args) {
System.out.println(isPrime(97));
}

/**
* <p>功能描述:判断是否是素数</p>
*
* @param n
* @return
* @author 胡晓 <BR> kskr@qq.com <BR>
* 时间:2010-3-17 上午08:09:48 <BR>
*/
public static boolean isPrime(int n){
int i ;
for(i=2; i <= Math.sqrt(n); i++){
if(n%i == 0 ){
break ;
}
}
return i > Math.sqrt(n);
}




/*
通常每4年里有3个平年,1个闰年。公历年份是4的倍数的一般是闰年,公历年份是整百数的,必须是400的倍数才是闰年。这是因为地球绕太阳旋转一周的时间,根据精确测定,约为365天5小时48分46秒。按一年365天(平年)计算,累计4年大约少算一天;把这一天加在2月里,这一年就是366天(闰年)。但这样一算,每4年又多算了44分56秒,每400年就要多算3天2小时53分20秒,所以就规定了公历年份是整百数的必须是400的倍数才是闰年。
*/
public static void main(String[] args) {
System.out.println(isLeapYear(1997));
}

/**
* <p>功能描述:判断是否是闰年</p>
*
* @param year
* @return
* @author 胡晓 <BR> kskr@qq.com <BR>
* 时间:2010-3-17 上午08:16:39 <BR>
*/
public static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}



/*
约瑟夫环(出圈):是一个数学的应用问题。

已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。

*/





判断一个数是不是2的N次方,这个是EE出的题,想了半天,java里面有一个Integer.toBinaryString(int i)来转成二进制,如果是2的N次方的话,那么这个数字应该是首位为1,其他位为0。那么该数减一,就所有首位为0,其他位为1,这两个数字按位与,就会得到0。

另外0按位与-1也是0,这个要排除
1 & 0虽然不是上面的规律,但是1 & 0 也是0,所以适用该算法

所以加一个i > 0做判断就够了

public static boolean testIndicial(int i) {
return i > 0 && (i & i - 1) == 0;
}





------------to be continued

兔子,迷宫,汉诺塔,出圈,简单的加解密,SSL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值