[蓝蓝计算机考研算法]-day01判断该数是否为素数

283 阅读1分钟

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

什么是素数

素数又叫质数,是指大于1的自然数中,除了1和它本身之外不再有其他因素的自然数

思路

分析:
1.先从控制台输入一个数
2.利用for循环,从最小的素数2开始,条件小于输入数的开平方根
3.在循环中判断n余上2到sqrt(n),等于零不是素数,反之是素数

具体实现

#include<iostream>
#include<cmath>
using namespace std;

int main(){
	int n;
	cout<<"请输入一个数:"<<endl;
	cin>>n;
	for(int i=2;i<=sqrt(n);i++){
		if(n%i==0){
			cout<<n<<"不是素数"<<endl;
			return 1; 
		}
	}
	cout<<n<<"是素数"<<endl;
}

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

什么是完数

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

思路

分析:
1.先从控制台输入求解范围 2.利用一层for循环,从2开始依次遍历 3.在二层循环中求出i除了本身之外的因子并加和,和等于i本身是完数,反之不是

具体实现

#include<iostream>
using namespace std;

int main(){
	int i,j,k,sum;
	cout<<"请输入所求整数范围上限:"<<endl;
	cin>>k;
	for(i=2;i<=k;i++){
		sum=0;
		for(j=1;j<i;j++){
			if(i%j==0)
		    sum+=j;
		}
		if(sum==i)
	    cout<<"完数为:"<<i<<endl;
	} 
	return 0;
}