/*
求两个数的“最大公约数”和“最小公倍数”
*/
#include<stdio.h>
int main(int argc,char *argv[])
{
int x,y,i,a,b;
scanf("%d %d",&x,&y);
a=x;
b=y;
if(x<y) //从小的数开始递减,求其最大公约数
{
while(1)
{
if(x%a==0&&y%a==0)
{
printf("最大公约数为%d\n",a);
break;
}
else
{
a--;
}
}
}
else
{
while(1)
{
if(x%b==0&&y%b==0)
{
printf("最大公约数为%d\n",b);
break;
}
else
{
b--;
}
}
}
if(x>y) //从大的数开始递增求最小公倍数
{
while(1)
{
if(a%x==0&&a%y==0)
{
printf("最小公倍数为%d\n",a);
break;
}
else
{
a++;
}
}
}
else
{
while(1)
{
if(b%x==0&&b%y==0)
{
printf("最小公倍数为%d\n",b);
break;
}
else
{
b++;
}
}
}
}
/*
求Sn=a+aa+aaa+…+a…a(n个a)
*/
#include<stdio.h>
int main(int argc,char *argv[])
{
int n,a,i=0,x=0,b=0;
scanf("%d %d",&n,&a);
if(n==0)
{
printf("Sn=%d\n",b);
}
else
{
for(i=1;i<=n;i++)
{
x=x*10+a;
b=x+b;
printf("Sn=%d\n",x);
}
printf("Sn=%d\n",b);
}
}
/.求1000以内所有的完数
完数:是指除了本身以外所有因子之和等于其本身
如:
6: 1 2 3
6=1+2+3
从1000开始递减,算其每个数的所有因子之和是否等于其本身;如果等于,就输出,并在最后将b(求和变量)清零
/
#include<stdio.h>
int main(int argc, char * argv [ ])
{
int i,a,b,c;
b=0;
for(i=1000;i>0;i--)
{
a=i;
while(--a)
{
if(i%a==0)
{
b=b+a;
}
}
if(b==i)
{
printf("%d\n",b);
}
b=0;
}
}
/*
连续的正整数之和。一个正整数有可能可以被表示
为n(n>=2)个连续的正整数之和:如
15=1+2+3+4+5
15=4+5+6
15=7+8
*/
#include<stdio.h>
int main(int argc, char * argv [ ])
{
int a,b,c,i,j,n,sum;
scanf("%d",&n); //利用穷举法
for(j=1;j<=n;j++)
{
sum=0;
for(i=j;i<n;i++)
{
sum+=i;
if(sum==n) //和相等就跳出循环
{
break;
}
}
if(sum==n)
{
a=i-j; //按从小到大输出
printf("i=%d",j);
for(b=j+1;b<=j+a;b++)
{
printf("+%d",b);
}
}
printf("\n");
}
}
/*
将一个正整数分解质因数。
例如:输入90
打印:90 = 233*5
*/
#include<stdio.h>
int main(int argc, char * argv [ ])
{
int i,j,a,b,c,n;
scanf("%d",&n);
a=n;
printf("n=");
for(i=2;i<n;i++)
{
while(1)
{
if(a%i==0&&(a>=i)) //求其因子
{
printf("*");
printf("%d",i);
a=a/i; //除以其因子直到不能除为之
}
else
{
break;
}
}
}
printf("\n");
}
/*
求100000000!末尾有多少个0?
*/
#include<stdio.h>
int main(int argc, char * argv [ ])
{
int count=0,i,b;
for(b = 1;b<=100000000;b++)
{
i=b;
while(i%5==0) //能除多少个5就有多少个0
{
count++;
i=i/5;
}
}
printf("100000000!末尾有%d个0\n",count);
}
/* 1024的655次方最后三位数是多少?
考虑到结果太大,内存无法存储的问题,所以每次的结果只取其最后三位数。就是结果
*/
#include<stdio.h>
int main(int argc, char * argv [ ])
{
int a,i;
a=1;
for(i=0;i<655;i++)
{
a=1024*a%1000;
}
printf("最后三位为%d\n",a);
}