zoukankan      html  css  js  c++  java
  • 杭电-------2098 分拆素数和(c语言写)

    #include<stdio.h>
    #include<math.h>
    
    
    int sushu[10000] = { 2,0 };
    int k = 0;//全局变量,用来标志此时已有多少个素数
    int judge(int n) {//判断是否为素数
        int i;
        if (n == 2) {
            return 1;
        }
        for (i = 2; i <= sqrt(n); i++) {
            if (n%i == 0) {
                return 0;
            }
        }
        return 1;
    }
    
    int main() {
        int a;//所要输入的数
        scanf("%d", &a);
        int flsg;
        int i;
        int x;//所求数
        while (a != 0) {
            x = 0;
            if (a > sushu[k]) {//将素数存入数组中
                if (sushu[k] == 2) {
                    i = sushu[k] + 1;
                }
                if (sushu[k] != 2) {//2已经存入数组
                    i = sushu[k] + 2;
                }
                for (; i <= a; i = i + 2) {//可以从已找到的最大数组开始向后找
                                           //后面的至少为单数
                    if (judge(i)) {
                        sushu[++k] = i;
                    }
                }
    
            }
            for (i = 0; i <= k; i++) {//先找素数中的数,找到一个
                if (a < sushu[i]) {//加入的数越多,数组中保存的素数的值可能大于分解值,直接跳出
                    break;
                }
                flsg = a - sushu[i];//减去之后判断剩下的数是否为素数
                if (judge(flsg) && sushu[i] != flsg) {
                    x++;
                }
            }
            printf("%d
    ", x / 2);//因为找的加数都是素数,又是按顺序找的,所以重复
            scanf("%d", &a);
        }
        return 0;
    }
  • 相关阅读:
    JavaScript知识回顾
    HTML和CSS相关知识回顾
    springmvc文件上传和下载
    jsp页面调试中的问题记录
    mybatis传参的几种方式
    ssm中调试遇到的坑
    idea新手日记
    Oracle安装
    mysql5安装
    Servlet 的原理----无脑笔记
  • 原文地址:https://www.cnblogs.com/lin0/p/8309625.html
Copyright © 2011-2022 走看看