[蓝蓝计算机考研算法训练二期]-day01 判断素数和计算完数

107 阅读1分钟

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

什么是素数

素数(质数)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

思路

任取一个大于1的自然数与该数进行取余操作,余数为0则为素数;

具体实现

#include <iostream>
using namespace std;
bool is_su(int num) {
	for(int i = 2; i < num; i++) {
		if( num % i == 0) {
			return false;
		}
	}
	return true;
}

2、求解从2到20000的所有完数。

所有的真因数的和等于本身的数字称为完数

思路

从1-num进行遍历,统计所有真因子的和,如果于原址相等则为完数返回1,若不是则返回0.

具体实现

#include <iostream>
using namespace std;
int is_wan(int n)
{
   int i,s=0;
    for(i=1; i<=n/2; i++)
    if(n%i==0)
        s+=i;
    if(s==n) 
        return 1;
    return 0;
}

int main() 
{
    int n;
    for(n=2;n<=20000;n++)
        if(is_wan(n))
        printf("%d,",n);
}