方法:

若n是素数,则n不能被2~n的任何整数整除!

代码:

 

 

#include“stdio.h”
#include"math.h"
//判断是否为素数
bool prime(int n){
    int i;
    for(i=2;i<=(int)sqrt(n);i++){
        if(n%i==0)
        return false;
    }
    return true;
}
void main(){
    int n,i,j=0; //j累计素数个数,n指求那个数之前的素数
    printf("n:");
    scanf("%d",&n);
    printf("所求的为小于等于n的素数:\n",n);
    if(n>2){
    printf("M",2);
    j++;
    }
    for(i=3;i<=n;i+=2){
        if(prime(i)){
            printf("M",i);
            if(j!=0&&++j==0) //每10个换一行
            printf("\n");
        }
    }
    printf("\n素数一共有%d个",j);
}

 结果:

 

输出所有小于等于n的素数(要求1)每行输出10个(要求2)较优的算法_素数