本文将教大家如何计算数学中的各种数,素数,完美数,水仙花数,使用的是 java 语言,一种普遍应用的语言。
首先,让我们来看看这几种数的定义:
素数:一个大于 1 的自然数,除了 1 和它自身外,不能被其他自然数整除的数叫做质数。
完美数(完备数):所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
水仙花数(自恋数):水仙花数是指一个 3 位数,它的每个数位上的数字的 3 次幂之和等于它本身。
// 寻找从2开始的多少个素数
public static int[] findPrimeNumber(int arrSize) {
int[] primes = new int[arrSize];
primes[0] = 2;
boolean isDivisible;
for (int prime = 3, i = 1; prime < arrSize; prime++) {
isDivisible = false;
for (int factor = 2; factor < prime; factor++) {
if (prime % factor == 0) {
isDivisible = true;
}
}
if (!isDivisible) {
primes[i++] = prime;
}
}
return primes;
}
复制代码
// 寻找多少以内的完美数
public static int[] findPerfectNumber(final int upside) {
int[] pNums = new int[100];
int index = 0, sum = 0;
if (upside <= 0) {
return new int[0];
}
for(int i = 1; i <= upside; i++) {
sum = 0;
for(int j = 1; j < i; j++) {
if (i % j == 0) {
sum = sum + j;
}
}
if (sum == i) {
pNums[index++] = i;
}
}
return pNums;
}
复制代码
// 寻找100到999的水仙数
private static void printNarcissusNumber() {
int i;
final double exponent = 3;
System.out.print("Narcissus numbers between 100 and 999: " + "\n");
for(i = 100; i <= 999; i++) {
// Narcissus Number satisfied criteria formula
if( ((((i/100)) * ((i/100))* ((i/100))) + (((i/10)%10) * ((i/10)%10) * ((i/10)%10)) + (((i%100)%10) * ((i%100)%10) * ((i%100)%10)) == i) )
// Use java.lang.Math final class static pow method
//if( (Math.pow((double)(i/100), exponent) + Math.pow((double)((i/10)%10), exponent) + Math.pow(((double)(i%100)%10), exponent)) == i )
System.out.print(i + "\n");
}
}
复制代码
本文介绍了如何用 java 编程语言计算素数,完美数,水仙花数,希望大家能有所学习。
评论