用JAVA 编写,求所有的4位数水仙花数又是素数, 有就输出。

如题所述

class A
{
public static void main(String arg[])
{
int k=1000;
while (k < 10000)
{
if (IsPrime(k)&&IsNarcissus(k))
System.out.print(k+" " );
k++;
}
}
public static boolean IsNarcissus(int k)
{
int temp=k;
int a;
int sum=0;
while(temp>0)
{
a=temp%10;
sum+=a*a*a*a;
temp/=10;
}
if(sum==k)
return true;
else
return false;
}
public static boolean IsPrime(int k)
{
if (k == 2)
return true;
else if (k % 2 == 0)
return false;
else
{
for (int i = 2; i <= Math.sqrt(k); i++)
if (k % i == 0)
return false;
return true;
}
}
}
没有这样的数.... 楼上的对于四位水仙花数,就应当是每个位上的数的4次方和和它本身相等而不是3次方和
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-08
public class Armstrong_number {
public static void main(String[] args) {
for (int i = 1; i < 9999; i++) {
if (isPrime(i)) {//判断素数
int n1, n2, n3;
int k = i;
n1 = k / 100;
k %= 100;
n2 = k / 10;
k %= 10;
n3 = k;
if (i == (getCube(n1) + getCube(n2) + getCube(n3))) {
System.out.println(i);//判断水仙花数
}
}
}
}

// 判断素数
public static boolean isPrime(int num) {
for (int i = 2; i <= Math.sqrt(num); i++) {// 程序默认2是素数,当j=2时,循环不执行
if (num % i == 0) {
return false;
}
}
return true;
}
public static int getCube(int n) {
return n * n * n;
}
}本回答被网友采纳
相似回答