每日算法(四十二)-java输入两个数字a、b,随后一行输入a个数字,从a个数字中选取b个数字进行组合
2019-06-06 21:43
274 查看
每日算法(四十二)-java输入两个数字a、b,随后一行输入a个数字,从a个数字中选取b个数字进行组合
输入两个数字a、b,随后一行输入a个数字,从a个数字中选取b个数字进行组合,
- 判断有几组数据之和为素数。
例如:
输入:
4 3
3 7 12 19
输出:
1
循环遍历每次取三个数,分别是i,i+1,i+2,当超过长度就取模,求和之后进行素数判断
这里判断素数是将小于2,2,能被2整除的先列出来,之后遍历时从3开始并且每次+2,减少时间复杂度
代码如下:
public class SumThree { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int b=sc.nextInt(); int arr[]=new int[a]; for(int i=0;i<arr.length;i++){ arr[i]=sc.nextInt(); } SumThree sh=new SumThree(); sh.sum( arr, b); } private void sum(int arr[] , int b) { int sum=0; int count=0; for(int i=0;i<arr.length;i++){ int n=(i+1)%(arr.length); int k=(i+2)%(arr.length); sum=arr[i]+arr[n]+arr[k]; if(isPrime(sum)){ count++; } } System.out.println(count); } //判断是否为素数 public boolean isPrime(int n){ if(n<2){ return false; } if(n==2){ return true; } if(n%2==0){ return false; } for(int i=3;i<n;i+=2){ if(n%i==0){ return false; }else{ return true; } } return false; } }
相关文章推荐
- Java—接受键盘输入的两个数字进行比较大小
- JAVA读取一行输入数字,进行简单排序
- java小算法—输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
- java实现输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- JAVA-从题目看算法,将输入字符串进行排序并输出
- [Java]练习题007: 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
- java算法程序题,输入三个数求哪个是最大数,先判断这三个数是否整数,不是就打印提示:请输入数字,若是就打印出那个最大数
- java获取键盘输入的数字,并进行排序的方法
- StChar.java 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- 2.Java手动输入10个数字,并对它们进行 奇偶数分类、平均値计算、求和操作。
- Java求解,输入两个整数n和m,从数列1,2,3,……n中随意取几个数,使其和等于m。要求将所有的可能组合列出来(背包动态规划问题求解)
- 用改过的“数字进制转换”枚举字符组合,这是简化的版本。(java,算法研究)
- java:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- 【算法】输入一个已经按升序排过的数组和数字,在数组中查找两个数字,使得它们的和正好是输入那个数字。
- 从n个数字中选取m个数字的组合算法(不分序列)
- JAVA--编写一个JFrame,标题为“计算的窗口”,在该窗口中组件的布局是FlowLayout。窗口中添加两个文本区,当我们在一个文本区中输入若干个数时,另一个文本区同时对输入的数进行求和运算并求
- java循环练习:手动输入两个数字m和n,运算求出m~n之间所有偶数的和
- java中输入一行字符,分别统计英文字母、空格、数字的个数
- java小算法—输入两个正整数m和n,求其最大公约数和最小公倍数
- 算法之数学自由组合问题(从M个不重复的数字中选取N个数字进行自由组合)