算法打卡第二期-day01

154 阅读1分钟

Day1

题目描述

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

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

思路:

将输入的数字a与1~a-1的数字取余,若只有a%1==0,则a是素数

具体实现

/*
1.从键盘输入一个整数,判断该数是否为素数
素数(质数)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
*/

#include<iostream>
using namespace std;

int main(){
	
	int a;
	int b = 0;
	cin >> a;
	for (int i = 1; i < a; i++) {
		if (a % i == 0) {
			b++;
		}
	}
	if (b > 1) {
		cout << a << "不是素数" << endl;
	}
	else {
		cout << a << "是素数" << endl;
	}
	return 0;
}

题目描述

2.求解从2到20000的所有完数.所有的真因数的和等于本身的数字称为完数

真因数是指一个自然数除自身以外的因数。如6的因数有1、2、3、6,真因数是1、2、3。

思路

具体实现

/*
2.求解从2到20000的所有完数.所有的真因数的和等于本身的数字称为完数
真因数是指一个自然数除自身以外的因数。如6的因数有1、2、3、6,真因数是1、2、3。
*/

#include<iostream>
using namespace std;

int main(){
	
	for (int i = 2; i <= 20000; i++) {
		int sum = 0;
		for (int j = 1; j < i; j++) {
			if (i % j == 0) {
				sum += j;
			}
		}
		if (sum == i) {
			cout << i << "为完数" << endl;
		}
	}
	return 0;
}