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