1不是素数,素书即是质数。 质数的定义:一个大于1的自然数,除了1和它本身外没有其他的约数。
方法一:
使用变量flag判断是否为偶数;%i==0,flag=1,结束;
记得把flag再赋值为0,否则下面的数进行判断时,flag一直都是1(若前面的有flag为1时)。
#include<bits/stdc++.h>
using namespace std;
int main(){
int flag=0;
int n=0;
for(int i = 2; i <= 100; i++){
flag = 0;
for(int j = 2; j < i; j++){
if(i%j == 0){
flag = 1;
break;
}
}
if(flag == 0){
n++;
cout<<i<<" ";
if(n % 5 == 0){
cout<<endl;
}
}
}
return 0;
}
方法二:
使用根号,缩小范围;注意:j <= k;要有等于号【比如根号25,要确定到5】
int k = sqrt(i);
for( j = 2; j <= k; j++){…}
if(j > k){…}
int main(){
int i,j,k,n;
for( i = 2; i < 100; i++){
int k = sqrt(i);
for( j = 2; j <= k; j++){
if(i%j == 0){
break;
}
}
if(j > k){
n++;
cout<<i<<" ";
if(n%5==0){
cout<<endl;
}
}
}
return 0;
}
2 3 5 7 11
13 17 19 23 29
31 37 41 43 47
53 59 61 67 71
73 79 83 89 97
换行的注意点:
if(n%5==0){
cout<<endl;
}
方法3:函数
bool isPrime(int x){
if(x == 2){
return true;
}
for(int i = 2; i < x; i++){
if(x%i == 0){
//一旦有约数,就是立刻返回false,停止程序
return false;//0
}
}
//所有i都不是false之后,才执行;也就是能执行到这部,也就是素数了,无任一个i可以return false
return true;//1
}