using System;classStepInPrimes{publicstaticlong[]Step(int g,long m,long n){for(long i = m; i <= n; i++){if(isPrime(i)){if(isPrime(i + g)&&(i + g)<= n){returnnewlong[2]{ i, i + g };}}}returnnull;}publicstaticboolisPrime(long number){if(number ==1)returnfalse;if(number ==2)returntrue;if(number %2==0)returnfalse;//Even number for(int i =3; i <= Math.Ceiling(Math.Sqrt(number)); i +=2){if(number % i ==0)returnfalse;}returntrue;}}
答案2:
using System.Collections.Generic;classStepInPrimes{publicstaticlong[]Step(int g,long m,long n){var primes =newList<long>();bool[] composite =newbool[n +1];for(long i =2; i * i <= n; i++)if(!composite[i])for(long j = i * i; j <= n; j += i)
composite[j]=true;for(long i = m; i <= n; i++)if(!composite[i]&& i >= m)
primes.Add(i);int prev;for(int i =0; i < primes.Count; i++)if((prev = primes.IndexOf(primes[i]- g))!=-1)returnnewlong[]{ primes[prev], primes[i]};returnnull;}}
答案3:
classStepInPrimes{publicstaticlong[]Step(int g,long m,long n){var s =newbool[n +1];for(long i =2; i < s.Length; i++){if(!s[i]){if(i - g >= m &&!s[i - g])returnnew[]{ i - g, i };for(long j = i * i; j < s.Length; j += i)
s[j]=true;}}returnnull;}}
答案4:
using System;publicstaticclassStepInPrimes{publicstaticlong[]Step(int g,long m,long n){for(long i = m; i <= n - g; i++)if(IsPrime(i)&&IsPrime(i + g))returnnewlong[]{i, i + g};returnnull;}privatestaticboolIsPrime(long n){if(n <=2|| n %2==0)return n ==2;for(long i =3; i <= Math.Sqrt(n); i +=2)if(n % i ==0)returnfalse;returntrue;}}
答案5:
using System;classStepInPrimes{publicstaticlong[]Step(int g,long m,long n){// your code if(g <1|| m >= n)returnnull;for(long i = m; m <= n; i++){if(!IsPrimes(i)){continue;}long end = i + g;if(end > n)returnnull;if(IsPrimes(end)){returnnewlong[]{i, end};}
i ++;}returnnull;}publicstaticboolIsPrimes(long number){if(number ==2)returntrue;if(number <2|| number %2==0)returnfalse;int pos =(int)Math.Ceiling(Math.Sqrt(number));for(int i =3; i <= pos; i +=2){if(number % i ==0)returnfalse;}returntrue;}}
答案6:
using System;publicclassStepInPrimes{staticbool[]GetPrimes(long n){bool[] numbers =newbool[n +1];
numbers[0]=true;
numbers[1]=true;long sqrtOfN =(long)Math.Round(Math.Sqrt(n));for(long i =2; i <= sqrtOfN; i++){if(numbers[i])continue;for(long j = i * i; j <= n; j += i)
numbers[j]=true;}return numbers;}publicstaticlong[]Step(int g,long m,long n){bool[] primes =GetPrimes(n);
n = n - g;for(long i = m; i <= n; i++)if(primes[i]==false&& primes[i + g]==false)returnnewlong[]{ i, i + g };returnnull;}}
答案7:
using System;classStepInPrimes{publicstaticboolIsP(long n){for(long i=3;i<=Math.Sqrt(n);i+=2)if(n%i==0)returnfalse;return n<2|n%2==0?false:true;}publicstaticlong[]Step(int g,long m,long n){for(long i=m/2*2+1;i<=n-g;i+=2)if(IsP(i)&&IsP(i+g))returnnewlong[]{i,i+g};returnnull;}}
答案8:
using System;classStepInPrimes{privatestaticBooleanPrime(long n){if(n ==2)returntrue;elseif((n <2)||(n %2==0))returnfalse;else{for(long i =3; i <= Math.Sqrt(n);++i){if(n % i ==0)returnfalse;}returntrue;}}publicstaticlong[]Step(int g,long m,long n){long[] res =newlong[2];long i = m;while(i <= n - g){if(Prime(i)&&Prime(i + g)){
res[0]= i;
res[1]= i + g;return res;}
i++;}returnnull;}}
答案9:
classStepInPrimes{privatestaticboolisPrime(long x){for(long c =2;(c * c)<= x; c++){if(isPrime(c)&&((x % c)==0)){returnfalse;}}returntrue;}publicstaticlong[]Step(int g,long m,long n){for(long x = m; x <(n-g); x++){if(isPrime(x)&&isPrime(x+g)){returnnewlong[]{x, x+g};}}returnnull;}}
答案10:
using System;using System.Collections.Generic;using System.Linq;classStepInPrimes{publicstaticlong[]Step(int g,long m,long n){while(m <= n - g){if(IsPrime(m)&&IsPrime(m + g))returnnew[]{m, m + g};
m++;}returnnull;}publicstaticboolIsPrime(long n){for(var i =2; i <= Math.Ceiling(Math.Sqrt(n)); i++)if(n%i ==0)returnfalse;returntrue;}}