我正在重新发布这个,重写,因为最初的问题没有多大意义写下来。
我正在尝试编写一小段代码,将数学问题添加到数据库中。这些是比率问题。
例如,我想添加许多问题,如“简化10:6”,并将答案存储为“5:3”。
我认为最好的办法是将数字存储为数组,将早期素数存储为数组(我现在只需要素数倍数)。
然后我可以遍历这个数组。我能这样做。但是,我希望每个可能的数字组合,而不仅仅是循环数组一次。
例如,我想要问题2:4,3:6,5:10,7:14等
所以我想将数字[0 ... 8]与每个其他数字配对,然后循环通过素数将这些组合与每个素数相乘。我知道这可能是某种嵌套for循环,但我真的不知道从哪里开始。
这就是我到目前为止所拥有的。它什么都没做。我意识到手动输入所有内容会更快,但我也想学习一些编码。
$digits = array(9,8,7,6,5,4,3,2,1);
$primes = array(2,3,5,7,11);
for ($first = 0; $first < count($digits)-1; $first++) {
$num1 = $digits[$first];
for ($second = 1; $second < count($digits)-2; $second++) {
$num2 = $digits[$second];
for ($third = 0; $third < count($primes)-1; $third++) {
$num3 = $num1 * $primes[$third];
$num4 = $num2 * $primes[$third];
$questionlead = "Simplify <br>" .$num3. " : " . $num4 ;
$ans = $num1. " : " . $num2 ;
$dbhost = 'nope';
$dbuser = 'notfor';
$dbpass = 'you';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = "INSERT INTO QuestionDB(TopicID, TopicName, SubtopicID, SubtopicName, Question, Answer, Difficulty, Author, Projectable) VALUES (6,'Ratio',1,'Simplifying ratio','".$questionlead. "','".$ans. "',1,'Richard Tock','Yes')";
mysql_select_db('db_name');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
}
}
}
mysql_close($conn);
?>
我在海上迷路了
第一个功能是“智能”部分,因为它完成所有算术运算。它不会在事后简化,所以如果你最终在循环中找到答案,那么可能值得检查1是否除以1,然后你可以返回1.但我想保持这种方式取决于关于你想如何使用它!
function simplify(Int $num, Int $denom, Array $primes){
//going from high primes to low primes
foreach(array_reverse($primes) as $prime) {
if (($num % $prime == 0) && ($denom % $prime == 0)) {
if ($num % $denom == 0) {
return [intdiv($num,$denom)];
} elseif ($denom % $num == 0) {
return [1,intdiv($denom,$num)];
}
return [$num / $prime,$denom / $prime];
}
}
return [$num,$denom];
}
下一个函数循环遍历2个数字数组。它相当难看,我通常不喜欢嵌套for循环。
function simplifyArrays(Array $arr1, Array $arr2, Array $primes) {
for($i=0; $i<count($arr1); $i++){
$num1 = $arr1[$i];
for($j=0; $j<count($arr2); $j++){
$num2 = $arr2[$j];
echo "simplify: $num1 / $num2 = " . implode("/",simplify($num1,$num2,$primes)) . "\n";
}
}
}
并看到它在行动:https://3v4l.org/qmgJX