首页 > 其他分享 >循环~分拆素数和

循环~分拆素数和

时间:2022-11-08 19:35:34浏览次数:45  
标签:拆成 int sqrt 偶数 素数 循环 分拆 include

题目描述

把一个偶数拆成两个不同素数的和,有几种拆法呢?

输入

输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。

输出

对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。

样例输入

30
26
0

样例输出

3
2


 1 #include<stdio.h>
 2 #include<math.h>
 3 
 4 int isPrime(int a)
 5 {
 6     int i;
 7     int flag=1;
 8     //时间超限70%
 9     // for(i=2;i<a;i++){
10     //     if(a%i==0)
11     //         flag=0;
12     // }
13     
14     for(i=2;i<=sqrt(a);i++){
15         if(a%i==0)
16             flag=0;
17     }
18     return flag;            //flag=1:是素数,flag=0:不是素数
19 }
20 
21 int main(){
22     int n;
23     while(scanf("%d",&n)){
24         if(n==0)
25             break;
26         int count=0;
27         int a,b;        //n被拆分成的两个数
28         for(int a=2;a<n/2;a++){
29             b=n-a;
30             if(isPrime(a)&&isPrime(b)){
31                 count++;
32             }
33         }
34         printf("%d\n",count);
35     }
36     return 0;
37 }

solution:

1 求素数的方法们:

  法一:时间复杂度:o(n)

      时间容易超限

      for(i=2;i<a;i++){         if(a%i==0)         flag=0;         }   法二:时间复杂度O(n*sqrt(n))        如果一个数不是素数,则必定为非1和其本身两个数的乘积,其中:较小数<=sqrt(a);较大数>=sqrt(a),且只需要枚举较小的范围      注意:取等~(3*3的情况)            for(i=2;i<=sqrt(a);i++){       if(a%i==0)       flag=0;       }

标签:拆成,int,sqrt,偶数,素数,循环,分拆,include
From: https://www.cnblogs.com/luoxiaoluo/p/16870887.html

相关文章

  • 循环高级
    无限循环:循环一直停不下来for(;;){}while(true){}do{}while(true);控制语句break;结束离他最近的整个循环continue;跳过本次循环Java帮我们写好了一个类叫Rand......
  • 循环遍历DataGridView各行某列数据
    循环遍历DataGridView各行某列数据如此做foreach(DataGridViewRowdgrindataGridView1.Rows){if(dgr.Cells["Column1"].Value==null){break;}......
  • Sass 循环语句,你需要学习一下
    本节我们学习Sass中的循环语句,Sass中的循环语句可以使用 @for指令和 @while指令来实现。@for指令@for指令可以用于循环生成样式,@for指令有两种类型,如下所示://第一......
  • 7种你可能不知道的JavaScript循环变体
    英文| https://betterprogramming.pub/all-javascript-loops-f6424cabfcb6翻译|web前端开发每个程序员应该都了解循环,最有可能从while循环开始,最终进入for循环,甚至递归......
  • 【JavaScript 教程】第四章 程序流程06— JavaScript for 循环
    英文 | https://www.javascripttutorial.net/译文|杨小爱在上节中,我们学习了JavaScript 程序流程中的dowhile语句,错过的小伙伴可以点击文章《​​【JavaScript教程】......
  • ScrollViewExtend_无限重复循环——ScrollView(转)
    //*****************************-》基类循环列表《-****************************//authorkim//初始化://Init(callBackFunc)//刷新整个列表(首次调用和数......
  • for循环,跳出循环和断点调试
    for循环:主要是用来遍历数组的,for循环的语法:for(初始化变量;条件表达式;操作表达式){循环体}1-初始化变量,初始化操作在整个for循环中只用执行1次2-条件表达式,如果为true,执行......
  • 6个在Vue.js编写更好v-for循环的技巧
    https://learnvue.co/2020/02翻译|杜尼卜在vuejs中,v-for循环是每个项目都会使用的东西,它允许您在模板代码中编写for循环。在最基本的用法中,它们的用法如下。<ul><liv-f......
  • 洛谷--【P1618】三连击升级版题解 排列枚举+循环枚举+stl
    题目描述将 1,2,…,91,2,…,9 共 99 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!。输入格式......
  • 循环~圣诞树
    题目描述圣诞节马上就要到了,Eddie在家自己搭圣诞树。输入两个整数,分别表示圣诞树的高度和圣诞树的数量。如样例输出圣诞树。输入两个整数,分别表示圣诞树的高度和圣......