思路: 质数即素数,除了1和它本身外,没有其他因数,0,1除外。
素数的因数必定小于x.sqrt()
具体实现:
#include <stdio.h>
main(){
int n,flag=1;
scanf("%d",&n);
for (int i=2; i<=sqrt(n); i++) {
if (n%i==0) {
flag=0;
break;
}
}
if (flag!=0&&(n!=1&&n!=0)) {
printf("是");
}else {
printf("不是");
}
}
思路:首先需要从2到20000都遍历一遍,其次要求所有因数,n的因数必定要小于等于n/2,所以只需要从1遍历到n/2
实现:
#include <stdio.h>
main(){
int sum;
for (int i=2; i<=20000; i++) {
sum=0;
for (int j=1; j<=i/2; j++) {
if (i%j==0) {
sum+=j;
}
}
if (sum==i) {
printf("%d\n",i);
}
}
}