您的位置:首页 > 编程语言 > Java开发

每日算法(四十二)-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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐