[蓝蓝计算机考研算法训练二期]-day01

55 阅读1分钟

[蓝蓝计算机考研算法训练二期]-day01

1、从键盘输入一个整数,判断该数是否为素数

思路:

(第一次这样写不知道能写成什么样) 我觉得首先作为素数的标准就是没有其他因数的自然数,那我就想着要不让他从把所有除它自身和1以外都除一次就可以知道是不是素数了吧

具体实现:

#include<stdio.h>
 int main()
{
   int i,n; 
   printf("请输入一个数字:");
   scanf ("%d",&n);
   for(i=2;i<n;i++)
   {
     if(n%i==0){
       printf("不是素数 ");
       break;
 	}
   }
   if(i==n){
	printf("是素数");
     }  
 }

2,求解2到20000的所有完数,所有的真因数和等于本身的数字成为完数。

思路:

能整除的就是因数,因数直接相加,当把比自身小的数都除过之后,判断总和是否等于自身,是则输出

具体实现:

int main()
{
    int sum=0;
    for(int i=2;i<=20000;i++)
    {
        for(int j=1;j<i;j++)
        {
            if(i%j==0)
            {
		sum+=j;
            }
         }
	if(sum==i)
        {
            printf(" %6d",i);
         } 
    sum=0;
	}
}

输出结果显示:

屏幕截图 2023-03-01 215117.png