C语言练习

求素数

输入的数n不能被2-(n-1)整除,说明是素数
输入的数n能被2-(n-1)整除,说明不是素数
注意:1不是素数,素数是指大于1的自然数,除了1和该数自身外,无法被其他自然数整除的数。

//求1--1000内的质数(素数)
#include
int main()
{
	int x = 0;   
	int i = 0;  
	for (x = 2; x < 1000; x++)    //在2到1000之间找素数
	{
		for (i = 2; i < x; i++)   //试除法,能不能被x整除,从2开始找,直到等于x
		{
			if (x % i == 0)   //找到能被x整除的数了,说明不是素数欸
			{
				break;
			}
		}
		if (x == i)   //找到和x(自身)相等也没有被整除的,证明是素数
		{
			printf("%d ",x);
		}
	}
	return 0;
}

求完数

一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。
例如6=1+2+3,编程找出1000以内的所有完数。
完数,就是其因子之和(不包括自己本身)等于其本身,称其为完数;
解决此题,我们需要将每个数逐个进行判断,如果条件符合,我们打印其因子就OK啦!

#include
	int main(void)
	{  
	  int num,i,j,sum;
      scanf("%d",&num);//求2~num之间所有完数
      for(i=2;i<num;i++)//遍历整个范围
      {
          sum=1;
          for(j=2;j<=i/2;j++)//因子的范围是 2~本身-1
          {
              if(i%j==0)//能被整除,说明是因子
                sum+=j;//因子和,以便接下来和本身比较
          }
          if(i==sum)//因子和等于本身是完数
          {
              printf("%d\n",i);
          }
      }
       return 0;
	}

最小公倍数

最小公倍数:是指能同时被a和b整除的最小正整数
例如:14 和 6 的最小公倍数有 42 84 126
最小的数就是最小公倍数
假设:a=6 b=18
创建个 while 循环 if 判断 a * i % b==0
看 a 乘于 i 得出的数看能不能被 b 整除如果可以那么它就是最小公倍数

int main()
{
	int a = 0, b = 0;
	scanf("%d %d", &a, &b);
	int i = 1;
	while ((a * i) % b != 0)
	{
			i++;
	}
	printf("%d\n", i * a);
	return 0;
}

最小公倍数呢,它与最大公约数的乘机为所求数之积。
比如求 x,y的最大公约数和最小公倍数
记住这个公式: xy=最小公倍数最大公约数

最大公因数

  • 先用 x 除以 y

  • 若余数为 0 则 y 为两数的最大公约数;若余数不为零,则令 x = y,y = 余数,重复步骤 1 直到余数为 0,此时的 y 为两数的最大公约数

36 ÷ 24 = 1 …… 12
24 ÷ 12 = 2 …… 0
12 为 36 和 24 的最大公约数

#include 
int main()
{
	int x = 0;
	int y = 0;
	scanf("%d %d", &x, &y);
	while (1)
	{
		if (x < y)//比较大小,让小的数放在后面
		{
			int tmp = x;
			x = y;
			y = tmp;
		}	
		if (x % y == 0)//若余数为 0 则 y 为两数的最大公约数;
		{
			printf("最大公约数的 %d\n", y);
			break;
		}
		else//若余数不为 0,则令 x = y,y = 余数,重复循环
		{
			int tmp = x % y;
			x = y;
			y = tmp;
		}
	}
	return 0;
}

你可能感兴趣的:(c语言,c++,算法)