【C/C++】素数专题

素数专题

  • 1.判断素数模板
  • 2.求范围内的素数(101-200)
  • 3.判断素数与分解

1.判断素数模板

#include
#include

int prism(int n){
    if(n==1) return 0;
    for(int i=2;i<=sqrt(n);i++){
        if(n%i==0) return 0;
    }
    return 1;
}

int main() {
    int n;
    printf("请输入n:");
    scanf("%d",&n);
    if(prism(n)){
        printf("%d是素数\n",n);
    }
    else{
        printf("%d不是素数\n",n);
    }
    return 0;
}

2.求范围内的素数(101-200)

#include
#include

int prism(int n){
    if(n==1) return 0;
    for(int i=2;i<=sqrt(n);i++){
        if(n%i==0) return 0;
    }
    return 1;
}

int main() {
    int a,b;
    printf("请输入a和b(a<=b):");
    scanf("%d %d",&a,&b);
    for(int i=a;i<=b;i++){
        if(prism(i)) printf("%d ",i);
    }
    return 0;
}

3.判断素数与分解

在这里插入图片描述

#include

int prism(int n){
    for(int i=2;i<=n/2;i++){
        if(n%i==0) return 0;
    }
    return 1;
}

int main() {
    int n;
    FILE * fp;
    if((fp = fopen("result.dat","a")) == NULL){
        printf("不能打开result.dat文件\n");
        return 0;
    }
    printf("请输入n:");
    scanf("%d",&n);
    if(prism(n)){
        printf("%d是素数\n",n);
    }
    else{
        printf("%d不是素数\n",n);
        if(n<=4 || n%2==1){
            printf("不能被分解为两个素数和的形式\n");
        }
        else{
            for(int i = 2; i < n/2; i++) {
                if(prism(i) && prism(n-i)){
                    printf("%d = %d + %d\n",n,i,n-i);
                    fprintf(fp,"%d = %d + %d\n",n,i,n-i);
                }
            }
        }
    }
    if(fclose(fp)!= 0)
        printf("关闭文件错误\n");
    return 0;
}

以上属个人见解。
❤️希望对您有帮助,您的支持是我创作最大的动力!

你可能感兴趣的:(C/C++,c语言,算法)