如果数字是素数,则此方法返回true或false.问题是它显示9,25和49作为素数.我该如何解决?
public static bool IsItPrime(int prime)
{
if (prime == 2)
return true;
else if (prime < 2 || prime % 2 == 0)
return false;
else
{
int limit = (int)Math.Sqrt(prime);
for (int i = 2; i < limit; i++)
{
if (prime % i == 0)
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud) 如何编写一个程序来查找给定数字后的n个素数?例如,在100之后的前10个素数,或在1000之后的前25个素数.编辑:下面是我尝试的.我正在以这种方式获得输出,但是我们可以在不使用任何素性测试函数的情况下进行输出吗?
#include<stdio.h>
#include<conio.h>
int isprime(int);
main()
{
int count=0,i;
for(i=100;1<2;i++)
{
if(isprime(i))
{
printf("%d\n",i);
count++;
if(count==5)
break;
}
}
getch();
}
int isprime(int i)
{
int c=0,n;
for(n=1;n<=i/2;n++)
{
if(i%n==0)
c++;
}
if(c==1)
return 1;
else
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我在使用这个C++代码时遇到了麻烦.整数num是一个我要检查它是否为素数的数字.但是这个程序总是返回false.它可能很简单但我找不到任何东西.
for(int i=2;i<num;i++){ //primes are allowed to be divided by 1 so we start at 2
if(num % i == 0){ //can be divided by a number other than itself or 1 so we trip out
return false;
} else if(i == num){ //if we've already done checks as high as possible and not tripped out yet then report success
return true;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个程序,告诉您数字是否为素数.这里是.正如您在运行该chkPrime函数时所看到的,一切都返回true.我为我的生活无法弄明白.有任何想法吗?
total=0
#Check if number is whole
def chkWhole(x):
if(x%1 == 0):
return True
else:
return False
#Check to see if the number divides evenly with all primes
def chkModtwo(n):
a=n%2
if chkWhole(a)==True:
return True
else:
return False
def chkModthree(n):
a=n%3
if chkWhole(a)==True:
return True
else:
return False
def chkModfive(n):
a=n%5
if chkWhole(a)==True:
return True
else:
return False
def chkModseven(n):
a=n%7
if chkWhole(a)==True:
return True
else:
return False
#Check if the number is a prime using other two …Run Code Online (Sandbox Code Playgroud) 我正在制作一个Common Lisp函数来打印前N个素数.到目前为止,我已设法编写此代码:
;globals
(setf isprime 1) ;if 1 then its a prime, 0 if not.
(setf from 1) ;start from 1
(setf count 0) ;should act as counter to check if we have already
; N primes printed
;function so far.
(defun prime-numbers (to)
(if (> count to) nil(progn
(is-prime from from)
(if (= isprime 1) (print from)(setf count (+ count 1)))
(setf isprime 1)
(setf from (+ from 1))
(prime-numbers to)))
(if (>= count to)(setf count 0) (setf from …Run Code Online (Sandbox Code Playgroud) 我正在使用Python解决Project Euler问题.我已经看到一些求解器使用的isPrime()函数只是测试是否x % y == 0所有y 2 to x ** 0.5.这样效率不高,我希望isPrime()根据num % 30测试编写更好的功能.这就是我想出的:
primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
primality = [1, 7, 11, 13, 17, 19, 23, 29]
def isPrime(num):
if not type(num) in (int, long):
raise ValueError
if num in primes:
return True
elif num < 2:
return False
elif num % 30 not in primality:
return False
else:
for prime in primes[3:]: …Run Code Online (Sandbox Code Playgroud) 我正在尝试解决Project Euler的问题#35,它问:
这个数字197被称为圆形素数,因为数字的所有旋转:197,971和719本身都是素数.
在100:2,3,5,7,11,13,17,31,37,71,73,79和97之下有十三个这样的素数.
一百万以下有多少个圆形素数?
为了解决这个问题,我在Swift中使用了以下代码:
let size = 1000000
func ESieve(x : Int) -> [Bool] {
var primes = [Bool](count: x + 1, repeatedValue: true)
primes[0] = false
primes[1] = false
for var i = 2; i < primes.count; i++ {
if !primes[i] {
continue
}
for (var j = 2*i; j < primes.count; j += i) {
primes[j] = false
}
}
return primes
}
let sieve = ESieve(size)
func getPrimes() -> [Int] {
var array …Run Code Online (Sandbox Code Playgroud) 我的逻辑出了什么问题?9这个循环如何作为素数而非素数出现?
这可以按照0,1,2,3,4,5,6,7,8的预期工作,但挂起9 ...
var userInput = 9
if userInput == 0 {
print("0 is not a prime number")
} else if userInput == 1 {
print("1 is not a prime number")
} else if userInput == 2 {
print("2 is a prime number")
} else {
for var i = 2; i < userInput; i = i + 1 {
if userInput % i == 0 {
print("\(userInput) is not a prime number")
break
} else {
print("\(userInput) is a …Run Code Online (Sandbox Code Playgroud) 这两个非常相似的代码具有非常不同的速度.我不明白为什么.第一个比第二个(5秒)慢得多(2分钟).
from numpy import sqrt
primes = [2]
for i in range(3, 1000000):
sq = int(sqrt(i))
aux = False
for j in primes:
if j>sq:
aux = True
elif i%j==0:
break
if aux:
primes.append(i)
Run Code Online (Sandbox Code Playgroud)
================================================== ================
def isPrime(p, primes):
bound = numpy.sqrt(p)
i = 0
while(primes[i] <= bound):
if p % primes[i] == 0:
return False
i += 1
return True
def compute_primes(bound):
primes = []
primes.append(2)
for n in range(3, bound):
answer = isPrime(n, primes)
if answer:
primes.append(n)
return …Run Code Online (Sandbox Code Playgroud) 我有以下haskell代码:
a (b : bs) = b : [c | c <- (a bs), c `rem` b /= 0]
Run Code Online (Sandbox Code Playgroud)
有人可以解释这段代码的作用吗?运行as
a [3,5..42]
Run Code Online (Sandbox Code Playgroud)
回报
Prelude> a [3,5..42]
[3,5,7,11,13,17,19,23,29,31,37,41*** Exception: <interactive>:71:1-46: Non-exhaustive patterns in function a
Run Code Online (Sandbox Code Playgroud)
从我所看到的,该功能就像Eratosthenes的Sieve一样.该函数将b视为素数并过滤掉b的倍数.但我不确定如何.最重要的是,该函数抛出此异常.