java 穷举法求水仙花数_C语言中使用穷举法的一些算法

★最大公约数和最小公倍数

用穷举法求最大公约数iloop的思路:

1、穷举的范围是1到两个整数中的最小数;

2、可能的解是两个数分别除以iloop时都能整除,余数为0的那个iloop。

而最小公倍数等于两个数的积除以最大公约数。

#include

int max(int first,int second);

int min(int first,int second);

void main()

{

int n1=0,n2=0,imax=0,imin=0;

printf("please input two number:\n");

scanf("%d%d",&n1,&n2);

imax=max(n1,n2);

imin=min(n1,n2);

printf("max number is: %d\n",imax);

printf("min number is: %d\n",imin);

}

int max(int first,int second)

{

int itmp=0,iloop=1;

if(first>second)

{

itmp=first;

first=second;

second=itmp;

}

while(iloop<=first)

{

if(((first%iloop)==0)&&((second%iloop)==0))

itmp=iloop;

iloop=iloop+1;

}

return itmp;

}

int min(int first,int second)

{

int itmp=0;

itmp=first*second/max(first,second);

return itmp;

}

★数字分解算法

试想想十进制数123,要怎样才能分解出1、2和3呢?

个位3当然是:123%10=3;十位2有点难度,不过想想就出来啦:12%10=2嘛,那12怎么来呢?123/10就等于12了嘛~~~至于1,用123除以100就出来啦~程序如下:

#include

void main()

{

int no=0,itmp=0;

scanf("%d",&no);

while(no>0)

{

itmp=no%10;

printf("%d\n",itmp);

no=no/10;

}

}

★水仙花数

所谓水仙花数,是指一个3位的十进制数,该数各位数字的立方和等于该数本身。例如153是一个水仙花数,因为13+53+33=153。100到1000里当然还有几个水仙数,我们就交给电脑算吧~

#include

void main()

{

int ge=0,shi=0,bai=0,itmp=0,ino=0;

for(ino=100;ino<1000;ino++)

{

ge=ino%10;

shi=(ino/10)%10;

bai=(ino/100)%10;

itmp=ge*ge*ge+shi*shi*shi+bai*bai*bai;

if(itmp==ino)

printf("no is: %d\n",ino);

}

}

我是一个C语言的菜鸟,希望这帖子能给C语言的初学者几道练习题吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值