最近我一直在研究使用Atve的Sieve(http://en.wikipedia.org/wiki/Sieve_of_atkin)生成其素数的C++素数生成器.我的目标是能够生成任何32位数字.我将主要用于项目的euler问题.大多数情况下,这只是一个夏季项目.
该程序使用一个位板来存储素数:即一系列的1和0,例如第11位将是1,第12位是0,第13位是1等.为了有效的内存使用,这实际上是和字符数组,每个字符包含8位.我使用标志和按位运算符来设置和检索位.该算法的陀螺很简单:使用我不假装理解的一些方程式进行第一次传递,以定义数字是否被认为是"素数".这将在很大程度上得到正确的答案,但一些非主要数字将被标记为素数.因此,在遍历列表时,将刚刚找到的素数的所有倍数设置为"非素数".这具有便利的优点,即需要较少的处理器时间,而素数越大.
我已经完成了90%,只有一个问题:一些素数缺失.
通过检查位板,我已经确定在第一次传递期间省略了这些素数,这基本上为每个方程式切换一个数字(参见维基百科条目).我一次又一次地浏览了这段代码.我甚至尝试增加维基百科文章中显示的界限,效率较低,但我想可能会打几个我已经忽略的数字.没有任何效果.这些数字只是评估为不是素数.我的大部分测试都是在128以下的所有质数下.在这个范围内,这些是省略的素数:
23和59.
我毫不怀疑,在更高的范围内,会有更多的缺失(只是不想计算所有这些).我不知道为什么缺少这些,但它们是.这两个素数有什么特别之处吗?我已经进行了两次和三次检查,发现并修复了错误,但是我仍然缺少一些愚蠢的东西.
无论如何,这是我的代码:
#include <iostream>
#include <limits.h>
#include <math.h>
using namespace std;
const unsigned short DWORD_BITS = 8;
unsigned char flag(const unsigned char);
void printBinary(unsigned char);
class PrimeGen
{
public:
unsigned char* sieve;
unsigned sievelen;
unsigned limit;
unsigned bookmark;
PrimeGen(const unsigned);
void firstPass();
unsigned next();
bool getBit(const unsigned);
void onBit(const unsigned);
void offBit(const unsigned);
void switchBit(const unsigned);
void printBoard();
};
PrimeGen::PrimeGen(const unsigned max_num)
{
limit = max_num;
sievelen = limit / DWORD_BITS + 1; …Run Code Online (Sandbox Code Playgroud) 你好,你怎么看待这个问题?
我们确实有太多的信息HttpSession,因为计算了大量信息,最终需要在请求之间存储一些大的对象图.
是否适合使用memcache等任何缓存?或者它与增加JVM的内存相同?
担心在请求之间将其存储在数据库中.如果我们收到OutOfMemory错误,你会用什么?
谢谢.
我有一个插入sql语句,例如
INSERT INTO `table_a` (`col_a`, `col_b`, `col_c`, `col_d`) VALUES
(1, 2, 3, 4),
(2, 1, 6, 9),
(3, 1, 4, 5)
Run Code Online (Sandbox Code Playgroud)
我想将其插入到另一个表中,但是我要插入的表具有与sql语句不同的结构(它具有更少的字段),例如
table_b has columns 'col_a', 'col_b', 'col_d'
Run Code Online (Sandbox Code Playgroud)
我需要对原始的sql语句做什么,以便我可以将它插入table_b.我想这将是忽略col_c中的值并将其发送到临时变量而不是字段的行.
INSERT INTO `table_b` (`col_a`, `col_b`, @temp_var, `col_d`) VALUES
(1, 2, 3, 4),
(2, 1, 6, 9),
(3, 1, 4, 5)
Run Code Online (Sandbox Code Playgroud) 给定代码行
var value = $("#text").val();
Run Code Online (Sandbox Code Playgroud)
而且value = 9.61,我需要转换9.61为9:61.我如何在这里使用JavaScript替换功能?
我将在PHP中使用AJAX获取已检查的单选按钮值.我已经完成了以下代码,但我无法继续.
我需要你的帮助.
ajax_radio.php
<html>
<head>
<script type="text/javascript" src="ajax.js" ></script>
</head>
<body>
<input type="radio" name="radio1">Blue</input>
<input type="radio" name="radio2">White</input>
<input type="radio" name="radio3">Red</input>
<input type="button" name="btn" value="Click" onClick="hello('a')"></input><br />
<input type="text" id="btn_get" name="get_btn_value"></input>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
ajax.js
var xmlHttp;
function GetXmlHttpObject(){
try{
xmlHttp = new XMLHttpRequest();
}
catch(e){
try{
xmlHttp = new ActiveXObject(Msxml2.XMLHTTP);
}
catch(e){
try{
xmlHttp = new ActiveXObject(Microsoft.XMLHTTP);
}
catch(e){
alert("doesn't support AJAX");
return false;
}
}
}
}
function hello(a){
GetXmlHttpObject();
xmlHttp.open("GET","ajax_radio.html?",true);
xmlHttp.onreadystatechange = response;
xmlHttp.send(null);
}
function response(){
if(xmlHttp.readyState == …Run Code Online (Sandbox Code Playgroud) 我的ExcelReaderC#应用程序中有一个类 - 我需要将Excel电子表格导入数据库表.我的问题是,这是为数不多的未经测试的类之一 - 我不能使用"模拟输入",并且使用实际的Excel电子表格进行测试会使测试有点慢(大约一秒钟).我知道班级工作正常 - 我手动测试了 - 但我有点不安,没有自己的测试就离开它.
所以 - 我的问题是:哪一个更好:没有单元测试,慢单元测试,或者第三种方法我无法弄清楚?
[编辑]很多很棒的答案,我真的很抱歉,我只能标记一个.
我运行我的Perl脚本(gettotal.pl),它工作正常.我设法得到TOTAL.txt的总和,并将输出值附加到test.txt.但是当我在shell脚本(test.sh)中运行它时出现了这个错误:
在/home/daily/scripts/per_NODE_HR/gettotal.pl第29行打开太多参数,在""$ dir附近")"/home/daily/scripts/per_NODE_HR/gettotal.pl的执行因编译错误而中止.
手动运行它(./gettotal.pl)和在shell脚本中运行它有什么区别?简单但仍然让我感到困惑:-)
gettotal.pl
#!/opt/perl/bin/perl-w
use strict;
my $sum;
open(FH,"/home/daily/scripts/per_NODE_HR/date.txt");
chomp (my @date = <FH>);
my $path = "/home/daily/output/per_NODE_HR/$date[0]/TOTAL.txt";
open(FILE,"$path") or die "Unable to open $path: $!";
my @hits = <FILE>;
$sum=sum($#hits);
print "TOTAL = $sum";
print "\n";
sub sum {
if ($_[0] == 0) {
return $hits[0];
}
return $hits[$_[0]] + sum($_[0]-1);
}
my $dir = "/home/daily/output/per_NODE_HR/$date[0]/test.txt";
open(OUT,'>>', "$dir") or die "Cannot open $dir: $!";
print OUT "TOTAL: $sum";
close OUT;
close FILE;
close …Run Code Online (Sandbox Code Playgroud) 我几乎不了解Matlab,需要将一些解析例程转换为Python.它们适用于大型文件,它们本身被划分为"块",并且我从文件顶部的校验和开始就很困难.
Matlab到底发生了什么?
status = fseek(fid, 0, 'cof');
fposition = ftell(fid);
disp(' ');
disp(['** Block ',num2str(iBlock),' File Position = ',int2str(fposition)]);
% ----------------- Block Start ------------------ %
[A, count] = fread(fid, 3, 'uint32');
if(count == 3)
magic_l = A(1);
magic_h = A(2);
block_length = A(3);
else
if(fposition == file_length)
disp(['** End of file OK']);
else
disp(['** Cannot read block start magic ! Note File Length = ',num2str(file_length)]);
end
ok = 0;
break;
end
Run Code Online (Sandbox Code Playgroud)
fid是当前正在查看的文件iBlock是一个计数器,你在文件中"阻止"它
magic_l和magic_h稍后与校验和有关,这里是代码(直接来自上面的代码):
disp(sprintf(' Magic_L = %08X, Magic_H = %08X, …Run Code Online (Sandbox Code Playgroud) 我想知道如何为一个混合成几个类的模块编写单元测试但是不太知道如何去做:
我是通过在其中一个测试文件中为包含它们的类(似乎不对)编写测试来测试实例方法,还是以某种方式将所包含方法的测试保存在特定于模块的单独文件中?
同样的问题适用于类方法.
我是否应该为模块中的每个类提供单独的测试文件,例如普通的rails模型,或者它们是否存在于通用模块测试文件中(如果存在的话)?
我是php的新手,所以我确定这是一个简单的.我得到这个错误
Notice: Undefined variable: conn in C:\Dev\Webserver\Apache2.2\htdocs\EclipsePHP\thecock\php\db.php on line 23
Run Code Online (Sandbox Code Playgroud)
这个代码
<?php
$host = "localhost"; $database = "dbname"; $username = "user"; $password = "pass";
$conn = new mysqli($host, $username, $password, $database);
if (! $conn) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}else{
echo("all ok!");
}
function getContent($id) {
$sql = "SELECT content FROM blocktext WHERE id=$id";
if ($rs = $conn->query($sql)) { # line 23
if ($row = $rs->fetch_assoc()) {
echo stripslashes($row['content']);
}
$rs->close();
}
}
?>
Run Code Online (Sandbox Code Playgroud)
我该如何修复通知?