㈠ 输入两个正整数m和n(m≥1,n≤1000),输出m到n之间的所有水仙花数。
inlineintsqr(inta,intb)//a的b次方.
{
if(b==0)return1;
intc=a;
while(--b)c=c*a;
returnc;
}
intmain()
{
intmin=100,max=1000000;//在这输入最小数和最大数.或换代码动态输入.
intsum=0,size,n[100];//最大支持100位的水仙花数
for(inti=min;i<=max;i++)
{
sum=i;
size=1;
while(sum/=10)size++;//sum临时用来计算长度.
sum=0;
for(intk=0;k<size;k++)
{
n[k]=i/sqr(10,size-k-1)%10;//取出位数
sum+=sqr(n[k],size);//本来是放在另一个循环里的,为了减少代码放在一起了.
}
if(sum==i)
printf("%d ",i);
}
}
㈡ sql server中把100-999之间所有水仙花数求出来
153、370、371、407
貌似只有你这一种写法,因为公式单一。。。
我JAVA里也就这样写。。。
必须声明3个
public class shuixianhua
{
public static void main(String[] args){
for(int i=1; i<=9; i++)
for(int j=0; j<=9; j++)
for(int k=0; k<=9; k++)
if(i*i*i+j*j*j+k*k*k == 100*i+10*j+k)
System.out.print(i*100+j*10+k+" ");
}
}
㈢ 求水仙花数,SQL
找到后,其各个数之立方和等于该数,153=1^3+5^3+3^3
,例如153水仙花数是一个三位数,即为一水仙花数,再导入sql中去。但用sql能编出来吗?你可以用其它的语言编好
㈣ 用sql语句,编写程序输出所有的水仙花数。帮我看看下面程序有什么问题,为什么得不到结果
其实你已经写完了,不过你忘了一件重要的事,重置循环用的变量。
下面是我帮你改过的,只加了两行,用注释帮你标明了,仔细看一下吧。
begin
declare@gint,@sint,@bint,@numint
set@g=0
set@s=0
set@b=1
while(@b<=9)
begin
set@s=0--这行是我加的,重置十位从0开始
while(@s<=9)
begin
set@g=0--这行是我加的,重置个位从0开始
while(@g<=9)
begin
set@num=@g+@s*10+@b*100
if(@num=power(@g,3)+power(@s,3)+power(@b,3))
print@num
set@g=@g+1
end
set@s=@s+1
end
set@b=@b+1
end
end
下面是执行结果
153
370
371
407
㈤ 用SQL语句 编写水仙花数
declare @a int,@b int,@c int,@s int,@num int
set @a=1
set @num=0
while @a<=9
begin
set @b=0
while @b<=9
begin
set @c=0
while @c<=9
begin
if power(@a,3)+power(@b,3)+power(@C,3)=@a*100+@b*10+@c
begin
set @s=@a*100+@b*10+@c
print str(@s,3,0)+'是水仙花数.'
set @num=@num+1
end
set @c=@c+1
end
set @b=@b+1
end
set @a=@a+1
end
print str(@num,3,0)+'个数被找到!'
㈥ 使用T-SQL语言统计100-1000之间的水仙花数个数并打印输出.
declare@numint
set@num=99
declare@n1int--第一位数
declare@n2int--第二位数
declare@n3int--第三位数
declare@nint--N次方
declare@resultint--次方相加的结果
set@n=3
while@num<=1000
begin
set@num=@num+1
set@n1=convert(int,substring(convert(varchar(10),@num),1,1))
set@n2=convert(int,substring(convert(varchar(10),@num),2,1))
set@n3=convert(int,substring(convert(varchar(10),@num),3,1))
set@result=power(@n1,@n)+power(@n2,@n)+power(@n3,@n)
if@result=@num
begin
print'结果'+convert(varchar(20),@result)+'['+convert(varchar(20),@num)+']'+'N:'+convert(varchar(20),@n)
end
end
现在我是把n设置成固定数值3做的,你再加一个循环就可以了
㈦ 编写程序,求解所有的水仙花数,要求用三层for循环嵌套来实现
pascal 程序:
var i, j, k: integer;
begin
for i:=1 to 9 do
for j:=0 to 9 do
for k:=0 to 9 do
if 100*i+10*j+k = i*i*i + j*j*j + k*k*k then
writeln(i,j,k, ' is shui xian hua shu.');
readln();
end.