[蓝蓝计算机考研算法训练二期]-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;
}
}