按照你的要求编写的求N位水仙花数的程序如下
站在用户的角度思考问题,与客户深入沟通,找到登封网站设计与登封网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、成都做网站、企业官网、英文网站、手机端网站、网站推广、主机域名、虚拟主机、企业邮箱。业务覆盖登封地区。
import java.util.Scanner;
public class CCC {
public static void main(String[] args) {
System.out.print("请输入正整数N(3=N=7):");
Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
if(N3 || N7){
System.out.println("N3 或者 N7");
return;
}
int min=(int)Math.pow(10, N-1);
int max=(int)Math.pow(10, N);
for(int i=min;imax;i++){
int tmp=i;
int j=0;
int a[]=new int[N];
while(tmp!=0){
a[j]=tmp%10;
tmp=tmp/10;
j++;
}
int sum=0;
for(int k=0;kN;k++){
sum=sum+(int)Math.pow(a[k],N);
}
if(sum==i){
System.out.println(i);
}
}
}
}
运行结果
请输入正整数N(3=N=7):4
1634
8208
9474
求水仙花数的Java程序如下
public class E {
public static void main(String[] args) {
System.out.println("水仙花数");
for(int i=100;i1000;i++){
int a=i/100;
int b=i/10%10;
int c=i%10;
if(i==a*a*a+b*b*b+c*c*c){
System.out.print(i+" ");
}
}
}
}
运行结果
水仙花数
153 370 371 407
public class Daffodil {
/**
*
* @param
* @return void
* @param args
* desc
*/
public static void main(String[] args) {
for (int n = 100; n 999; n++) {
int a = n / 100;
int b = (n % 100) / 10;
int c = n % 10;
if(Math.pow(a, 3)+Math.pow(b,3)+Math.pow(c,3)==n){
System.out.println(n);
}
}
}
}
按一下代码执行:
public class woo {
public static void main(String args[]) {
System.out.println("100-1000中的水仙花数有:");
for(int i=100;i1000;i++){
int single = i%10;
int ten = i/10%10;
int hundred = i/10/10%10;
//水仙花数判断要求
if(i == (single*single*single+ten*ten*ten+hundred*hundred*hundred)){
System.out.println(i);
}
}
}
}
扩展资料:
水仙花数只是自幂数的一种,严格来说3位数的3次幂数才称为水仙花数。
一位自幂数:独身数
两位自幂数:没有
三位自幂数:水仙花数
四位自幂数:四叶玫瑰数
五位自幂数:五角星数
六位自幂数:六合数
七位自幂数:北斗七星数
八位自幂数:八仙数
九位自幂数:九九重阳数
十位自幂数:十全十美数
参考资料:
水仙花数——百度百科
public void isNumber(int num)
{
String numm=""+ num;//首先把你输入的整型数转换成字符类型
int len=numm.length();//得到你输入的数的个数(你要判断的数是三位数、四位数、、、)
int [] nums=new int [len];//声明一个数组来保存输入的这个数分别拆分后的单个值,如153 (1、5、3)
int temp=0,i=0;
while(num10)//用循环分别把这个位的每个位上的值保存在数组中
{
nums[i] = num % 10;
String nu=numm.substring(0, (numm.length()-(i+1)));
num =Integer.parseInt(nu);
i++;
if(num10)
{
nums[i]=num;
break;
}
}
for (int j = 0; j nums.length;j++)
{//用循环得到数组中无素的值累加
temp += (int) Math.pow(nums[j], nums.length);
}
num=Integer.parseInt(numm);
if(temp==num)//判断累加后的结果是否与输入的值一致
{
( System.err.println(num+"是水仙花数!"); }
else
{
System.err.println(num+"不是水仙花数!"); }
}
public static void main(String [] args)
{
Scanner input =new Scanner(System.in);
System.out.println("请输入一个数字:");
int num = input.nextInt();
isNumber(num);
}
}
今天偶然发现这个,分享给大伙。在Java里也实现,希望对初学者有所帮助。 以下是代码内容: package shuixianhuashu; /** *运算规则: *水仙花数是三位数,它的个、十、百位数字的立方的和等于该数本身, *例如:371=27+343+1 *求出所有水仙花数(分别用for,while循环实现) * @author S10 * */ public class ShuiXianHuaShu { public static void main(String[] args) { int count = 0; for(int i = 100; i 1000; i ++){ if(getCount(i)){ System.out.println(i + "是水仙花数....."); count++; } } //上下两个循环的效果是一样的 int i = 100; while(i 999){ i++; if(getCount(i)){ System.out.println(i + "是水仙花数===="); count++; } } System.out.println("共有" + count + "个水仙花数!"); } //得到一个数的立方的值 public static int getLifang(int i){ return i * i * i ; } public static boolean getCount(int i){ int a = i / 100; //取出百位的的数字 int temp = i % 100; int b = temp / 10; //取出十位的数字 int c = temp % 10; //取出各位的数字 if(getLifang(a) + getLifang(b) + getLifang(c) == i){ return true; }else{ return false; } } } (责任编辑:董建伟)