大家好我有困難在各種情況下運行一些代碼。我有代碼可以找出有多少素數,數組中的所有數字,所需時間,以及打印多少素數。這一切工作正常,但後來我需要運行相同的代碼,但與一個字符數組。這就是問題的來這裏是代碼,以int數組:將int數組更改爲char數組
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <stdio.h>
using namespace std;
static const int N = 1000;
int main()
{
int i, a[N];
clock_t start = clock();
for (i = 2; i < N; i++) a[i] = i;
for (i = 2; i < N; i++)
if (a[i])
for (int j = i; j*i < N; j++) a[i*j] = 0;
start = clock() - start;
int primes = 0;
for (i = 2; i < N; i++) {
if (a[i]) {
primes++;
cout << " " << i;
if (primes % 10 == 0)
cout << "\n";
}
}
printf("\nIt took %d clicks (%f seconds) to find all prime numbers.\n", start, ((float)start)/CLOCKS_PER_SEC);
cout << "The number of primes out of " << N << " integers is " << primes << endl;
return 0;
}
當我簡單地用「炭」爲陣列替換「廉政」,並設置「N」爲類似10 ,或100它工作得很好,除了素數看起來如何。任何更高和沒有打印。我知道它不那麼簡單,只是改變它說'int'到'char'的地方,但我對這個主題毫無希望地失去了。沒有幫助,我需要再次這樣做,但將陣列更改爲布爾類型(這對我來說也沒有多大意義。)
任何類型的洞察力或簡單的解決方案將是美好的。在此期間我會繼續尋找某些東西。謝謝!
無法重現。對char數組工作正常(儘管存在明顯的但是無害的錯誤)。 –
我可以問你在試用時做了什麼嗎?你是用'char i,a [N]'替換'int i,a [N]'還是還有更多?我很迷茫。 – Wil
「a [i]」的最大值是127或255,取決於「char」是有符號還是無符號。所以如果你設置的N高於這個值,你會爲超過這個限制的所有元素分配無效的值。 – Barmar