我正在尝试在C#中编写素数函数,我想知道以下代码是否有效.它"似乎"可以使用前50个数字左右.我只是想确保无论数量有多大都可行:
static bool IsPrime(int number)
{
if ((number == 2) || (number == 3) || (number == 5) || (number == 7) || (number == 9))
return true;
if ((number % 2 != 0) && (number % 3 != 0) && (number % 5 != 0) &&
(number % 7 != 0) && (number % 9 != 0) && (number % 4 != 0) &&
(number % 6 != 0))
return true;
return false;
}
Run Code Online (Sandbox Code Playgroud) 我制作了一个可以生成素数的程序.我希望程序写入文件.当我生成素数达到Integer.Max_Value时,由于某种原因,它不会写出所有素数,它就会停止.这是我的代码:
import java.io.*;
public class Primes {
public static void main(String[] args) throws IOException {
generate(Integer.MAX_VALUE);
}
// generate primes.
public static void generate(int limit) throws IOException {
BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\Primes.txt"));
writer.write(2);
for (int i = 3; i <= limit; i += 2) {
if (isPrime(i)) {
writer.write(Integer.toString(i));
writer.newLine();
}
}
writer.close();
}
// checking for primes
public static boolean isPrime(int n) {
for (int i = 2; i <= (Math.sqrt(n)); i++) {
if (n % i …Run Code Online (Sandbox Code Playgroud) 通过列出前六个素数:2,3,5,7,11和13,我们可以看到第6个素数是13.
什么是10 001主数?
我的解决方案
public class Prime_Number {
public static boolean isPrime(long n) {
if ((n > 2 && n % 2 == 0) || (n > 3 && n % 3 == 0) || (n > 5 && n % 5 == 0) || n == 0 || n == 1) {
return false;
}
return true;
}
public static void main(String[] args) {
int count = 0;
int prime = 0;
while (prime <= 10001) {
if (isPrime(count) …Run Code Online (Sandbox Code Playgroud) 以下是两个看似等效的函数版本,用于从数字列表中过滤掉素数.
版本1
def prime (mylist):
for i in range(2, 8):
return filter(lambda x: x == i or x % i, mylist)
Run Code Online (Sandbox Code Playgroud)
版本2
def prime2 (mylist):
nums = mylist
for i in range(2, 8):
nums = filter(lambda x: x == i or x % i, nums)
return nums
print prime([2,3,4,5,6,7,8,9,10,11,12,13,14,15])
>> [2, 3, 5, 7, 9, 11, 13, 15]
print prime2([2,3,4,5,6,7,8,9,10,11,12,13,14,15])
>> [2, 3, 5, 7, 11, 13]
Run Code Online (Sandbox Code Playgroud)
版本1返回错误的结果.为什么?
我需要实现一个递归函数,如果数字是素数则返回1,否则返回0.这是家庭作业,但我错过了很多课程,因为我病了,我找不到任何教学答案.我真的很感激正确答案,所以我可以学习.
编辑:问题说我不能使用'%'mod
Haskell应该是这样的......我不确定
isprime x = prime(x sqrt(x))
prime x i = | i==1 = 1
| mod(x i)==0 = 0
| otherwise = prime(x i-1)
mod num div | num<div = n
| otherwise = mod(num-div div)
Run Code Online (Sandbox Code Playgroud)
我在C中测试了一个算法,因为我的mac上没有Haskell编译器,但是有些错误,因为它在primes-1idk 上返回误报为什么
int main (int argc, const char * argv[]){
int a=0,b=31;
printf("\n Prime numbers between %d and %d \n",a,b);
for(int a=0; a<=b; a++){
if(isPrime(a)==0){
printf("%d, ",a);
}
}
return 0;
}
int isPrime(int x){
return prime(x, sqrt(x));
}
int …Run Code Online (Sandbox Code Playgroud) 我有这个Haskell脚本:
prime :: Integer -> Bool
prime 1 = False
prime n = [ x | x <- [2..n-1], n `mod` x == 0 ] == []
Run Code Online (Sandbox Code Playgroud)
什么是第一次x在最后一行代表什么?为什么我可以用"String"替换它,整个功能仍然有效?
嘿伙计们,我正试图从我的发电机中挤出更多的质数,但是在第60次运行中已达到+ - 14,000,000左右的极限值,我希望尽可能推高可能达到25-30万.关于如何完成这一壮举的任何想法?
这是我的PHP代码
<?php
$i = 2;
$primes = array();
while(true)
{
$prime=true;
$sqrt=floor(sqrt($i));
foreach($primes as $num)
{
if($i%$num==0)
{
$prime=false;
break;
}
if($num>$sqrt) break;
}
if($prime) echo "$i\n";
$i++;
}
Run Code Online (Sandbox Code Playgroud)
这是运行它的小bash脚本
#!/bin/bash
outfile="$1.out"
`php $1 > $outfile &`
sleep 60
killall php
Run Code Online (Sandbox Code Playgroud)
编辑
这是昨晚的pcntl_forked版本只是为了看看会更快.出于一些奇怪的原因,我做得越少越好,如果是,我发现瓶颈来自gmp_strval(gmp_nextprime($start))哪个非常慢.
<?php
$primeCount = 0;
for ($i = 1; $i <= 1; ++$i) {
$start = $i;
$pid = pcntl_fork();
if (!$pid) {
while(true) echo $start = gmp_strval(gmp_nextprime($start)) . "\n";
exit($i);
}
} …Run Code Online (Sandbox Code Playgroud) 我不确定我是否应该问这里或程序员,但我一直在努力弄清楚为什么这个程序不会工作,虽然我发现了一些错误,它仍然会返回"x不是素数",即使它是.
#include <iostream>
using namespace std;
bool primetest(int a) {
int i;
//Halve the user input to find where to stop dividing to (it will remove decimal point as it is an integer)
int b = a / 2;
//Loop through, for each division to test if it has a factor (it starts at 2, as 1 will always divide)
for (i = 2; i < b; i++) {
//If the user input has no remainder then it cannot be …Run Code Online (Sandbox Code Playgroud) 我正在尝试生成随机素数
print Math::Prime::Util->random_strong_prime(128);
Run Code Online (Sandbox Code Playgroud)
但是,当我调用Math :: Prime :: Util的方法之一(我尝试各种方法)时,我得到:
Parameter 'Math::Prime::Util' must be a positive integer at /home/ivan/perl5/lib/perl5/x86_64-linux-thread-multi/Math/Prime/Util.pm line 400.
我不能错过什么是错的,128是正整数.脚本在Starman服务器下运行(psgi)
我遇到了这个有效的程序来打印给定数字的所有主要因素:
# include <stdio.h>
# include <math.h>
// A function to print all prime factors of a given number n
void primeFactors(int n)
{
// Print the number of 2s that divide n
while (n%2 == 0)
{
printf("%d ", 2);
n = n/2;
}
// n must be odd at this point. So we can skip
// one element (Note i = i +2)
for (int i = 3; i <= sqrt(n); i = i+2)
{
// While i …Run Code Online (Sandbox Code Playgroud)