Java中的常用算法
来源:互联网 发布:node formidable 编辑:程序博客网 时间:2024/05/22 15:51
1、求1到200之间的所有素数。
分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明不是素数,反之,是素数。
public class SuShu
{
public static void main(String[] args)
{
/** 记录素数的个数 */
int count = 0;
for (int i = 101; i < 200; i += 2)
{
boolean b = false;
for (int j = 2; j < Math.sqrt(i); j++)
{
if (i % j == 0)
{
b = false;
break;
}
else
{
b = true;
}
}
if (b == true)
{
count++;
System.out.print(i + " ");
}
}
System.out.println("素数的个数是:" + count);
}
}
2、求水仙花数。
分析:水仙花数就是一个三位数,其各位数字立方和等于该数本身。
public class ShuiXianHua
{
public static void main(String[] args)
{
int b1,b2,b3;
for(int i=101;i<1000;i++){
/**求百位数*/
b1 = i/100;
/**求十位数*/
b2 = i%100/10;
/**求个位数*/
b3 = i%10;
if((b1*b1*b1+b2*b2*b2+b3*b3*b3)==i){
System.out.println(i+" 是水仙花数");
}
}
}
}
3、求一个数的最大公约数和最小公倍数。
分析:
方法1:
在循环中,只要除数不为0,用较大的数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数就是最大公约数,最小公倍数为两数之积除以最大公约数。
public class GongYueAndGongBei
{
public static void main(String[] args)
{
int a, b, m;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
a = scanner.nextInt();
System.out.println("请输入另一个整数:");
b = scanner.nextInt();
Deff df = new Deff();
m = df.deff(a, b);
int n = a * b / m;
System.out.println("最大公约数是:" + m);
System.out.println("最小公倍数是:" + n);
}
}
class Deff
{
public int deff(int x, int y)
{
int temp;
if (x < y)
{
temp = x;
x = y;
y = temp;
}
while (y != 0)
{
if (x == y)
{
return x;
}
else
{
int k = x % y;
x = y;
y = k;
}
}
return x;
}
}
方法2:
辗除法
public class CommonDivisor
{
public static void main(String[] args)
{
int temp = commonDivisor(4, 6);
System.out.println("最小公倍数是:"+4*6/temp);
}
static int commonDivisor(int m,int n){
if(m<0||n<0){
System.out.println("error");
return -1;
}
if(n==0){
System.out.println("最大公约数是:"+m);
return m;
}
return commonDivisor(n, m%n);
}
}
方法3:
public class CandC
{
public static void main(String[] args)
{
int temp = gcd(10, 20);
System.out.println("最大公约数是:" + temp);
System.out.println("最小公倍数是:" + 4 * 10 / temp);
}
public static int gcd(int m, int n)
{
while (true)
{
if ((m = m % n) == 0)
{
return n;
}
if ((n = n % m) == 0)
{
return m;
}
}
}
}
- Java中的常用算法
- java 中的常用排序算法
- Java中的常用排序算法
- Java中的8大常用排序算法。
- Android/Java中的常用签名算法
- STL中的常用算法
- STL中的常用算法
- STL中的常用算法
- 面试中的常用算法
- STL中的常用算法
- STL中的常用算法
- 游戏中的常用算法
- STL中的常用算法
- STL中的常用算法
- java中常用算法算法
- java 常用的算法
- Java常用算法分析
- java常用算法
- R ->Rstudio->Vim->knitr最强R编辑器
- 马踏棋盘(6*6时效率不可忍受,求教!)
- Java学习日记1 接触多线程
- C++指针
- Android中的国际化
- Java中的常用算法
- iscsi initiator 安装配置
- CWnd::UpdateData
- 最长回文串模板 (Manacher's算法)o(n)复杂度
- onvif开发之设备发现功能的实现
- Oracle 11g服务详细介绍及哪些服务是必须开启的?
- java.lang.IllegalArgumentException: node to traverse cannot be null!
- 新博客
- Java_读取xml文件;