这是我到目前为止:
//project Eular Problem 4: Prime Factors
#include<iostream>
#include<cmath>
typedef unsigned long long int uint_64;
using namespace std;
void storeFactors(uint_64 factors[], uint_64 num)
{
for(uint_64 i=0;i*i<num;i++
factors[i]=1; //assign 1 to all the values
for(uint_64 j=2; j*j<num;j++){
if(num%j!=0)
factors[j]=0; //assign 0 to non-factors
}
}
//Sieve of Eratosthenes to generate primes
void gen_primes(uint_64 arr[],uint_64 firstElement, uint_64 lastElement, uint_64 size)
{
for(uint_64 i=0;i<size;i++) //assigning 1 to all the values
arr[i]=1;
for(uint_64 i=2;i*i<=lastElement;i++){ //loop until the square-root of n
if(arr[i])
for(uint_64 j=i;j*i<=lastElement;j++) //eliminate …Run Code Online (Sandbox Code Playgroud) 我一直在努力从一本书中自学C++.下面这段代码是一个问题,因为我无法弄清楚我做错了什么.代码是本书的一个例子,但它不会带来相同的结果.
函数subdivide()应该使用分而治之的方法在中点分割数组并打印字符'|' 在那里(创造一个统治者的幻觉),随后在每一个新线上打印中点.问题是,最终的印刷品只包含字符"|" 在所有线的终点处,中间没有打印字符.
我试图张贴图片,但显然我不能.
我会感激任何帮助.这是C++代码:
//using recursion to subdivide a ruler
#include<iostream>
const int len=66;
const int div=6;
void subdivide(char ar[], int min,int max,int level);
int main()
{
using namespace std;
char ruler[len];
int i;
for(int i=1; i<(len-2); i++)
ruler[i]=' ';
ruler[len-1]='\0';
int min=0;
int max=len-2;
ruler[min]=ruler[max]='|';
cout<<ruler<<endl;
for(i=1;i<=div;i++){
subdivide(ruler, min, max, i);
cout<<ruler<<endl;
for(int j=1; j<len-2; j++)
ruler[j]=' ';
}
return 0;
}
void subdivide(char ar[],int low,int high,int level)
{
using namespace std;
if (level==0);
return;
int mid=(high+low)/2; …Run Code Online (Sandbox Code Playgroud)