连续k-Primes【难度:3级】:答案1:using System;class PrimeConsec { private static int countPrimeDiv(long n) { int cnt = 0; for (long i = 2; i * i <= n; i++) { ...
摘要由CSDN通过智能技术生成
连续k-Primes【难度:3级】:
答案1:
using System;classPrimeConsec{
privatestaticintcountPrimeDiv(long n){
int cnt =0;for(long i =2; i * i <= n; i++){
while(n % i ==0){
cnt++;
n /= i;}}if(n >1) cnt++;return cnt;}publicstaticintConsecKprimes(int k,long[] arr){
int cnt =0;for(int i =0; i < arr.Length -1;++i)if((countPrimeDiv(arr[i])== k)&&(countPrimeDiv(arr[i+1])== k))
cnt +=1;return cnt;}}
答案2:
using System;classPrimeConsec{
publicstaticintConsecKprimes(int k,long[] arr){
int len = arr.Length;bool[] factorK =newbool[len];for(int i =0; i < len; i++){
factorK[i]=IsFactorK(arr[i], k);}int result =0;for(int i =0; i < len -1; i++){
if(factorK[i]&& factorK[i+1]){
result++;}}return result;}publicstaticboolIsFactorK(long num,int k){
int factor =0;double upperBound = Math.Sqrt(num)+1;for(int i =2; i < upperBound; i++){
if(num ==1)break;while(num % i ==0){
num /= i;
factor++;if(factor > k){
returnfalse;}}}if(num !=1){
factor++;
连续k-Primes【难度:3级】:答案1:using System;class PrimeConsec { private static int countPrimeDiv(long n) { int cnt = 0; for (long i = 2; i * i <= n; i++) { ...