1、从键盘输入一个整数,判断该数是否为素数
什么是素数
素数(质数)是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
思路:
设置一个输入值n,再设置一个bool值初始为false,进行两重循环,如果有两个数相乘等于n而且这两个数均不为1,则让bool==true。最后如果bool为true,不是素数,bool为false,则是素数
具体实现:
//判断一个数是否为素数
#include <stdio.h>
#include <stdbool.h>
int main() {
int n;
printf("请输入数字\n");
while(scanf("%d",&n)!=EOF){
bool A=false;
for(int i=1;i<=n;i++){
for(int j =1;j<=n;j++){
if(i*j==n&&(i!=1&&j!=1)){
A=true;
}
}
}
if(A==true){
printf("不是素数");
} else{
printf("是素数");
}
printf("\n");
}
}
2、求解从2到20000的所有完数。
什么是完数? 假设一个数为n,除n外所有因数之和为n的数,如6的因数为1,2,3,6。除6外,1,2,3相加等于6,说明6为完数。
思路:设置两层for循坏,外层是i(2-20000),内层是从j(1到i-1),如果i%j==0,则sum+=j,最后判断sum与i的值是否相等
代码:
//求完数
#include <stdio.h>
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){
printf("%d",i);
printf("\n");
}
}
}