Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

소수구하기/임인택: Difference between revisions

From ZeroWiki
imported>Unknown
No edit summary
 
(Repair batch-0006 pages from live compare)
 
Line 5: Line 5:
  int main()
  int main()
  {
  {
  int tmp_arr[10000]={2,0};
  int tmp_arr[10000]={2,0};
  int cur_arr_index = 1;
  int cur_arr_index = 1;
  int i,j;
  int i,j;
Line 15: Line 15:
  for(i=3; i<50000; i++) {
  for(i=3; i<50000; i++) {
  flag = true;
  flag = true;
  for(j=0; tmp_arr[j]<=sqrt(i); j++)
  for(j=0; tmp_arr[j]<=sqrt(i); j++)
  //for(j=0; j<cur_arr_index; j++)
  //for(j=0; j<cur_arr_index; j++)
  {
  {
  if(i%tmp_arr[j]==0) {
  if(i%tmp_arr[j]==0) {
  flag=false;
  flag=false;
  break;
  break;
Line 24: Line 24:
  else continue;
  else continue;
  }
  }
  if(flag) tmp_arr[cur_arr_index++]=i;  
  if(flag) tmp_arr[cur_arr_index++]=i;  
  }
  }
   
   
Line 32: Line 32:
   
   
  /*for(i=0; i<cur_arr_index; i++)
  /*for(i=0; i<cur_arr_index; i++)
  cout << tmp_arr[i] << ' ';*/
  cout << tmp_arr[i] << ' ';*/
   
   
 
 
Line 44: Line 44:


''DeleteMe 50000까지의 소수는 총 5133개입니다. 위 코드는 더 많은 숫자를 출력합니다. sqrt부분을 잘 생각해 보세요.''
''DeleteMe 50000까지의 소수는 총 5133개입니다. 위 코드는 더 많은 숫자를 출력합니다. sqrt부분을 잘 생각해 보세요.''
   for(j=0; tmp_arr[j]<sqrt(i); j++)  
   for(j=0; tmp_arr[j]<sqrt(i); j++)  
   이 부분을  
   이 부분을  
     for(j=0; tmp_arr[j]<=sqrt(i); j++)   
     for(j=0; tmp_arr[j]<=sqrt(i); j++)   
   이렇게 수정했더니 되는군요. 등호하나때문에 결과가 엄청나게 달라지는군요. 지적해 주셔서 감사 - 임인택 ([[radiohead4us]])
   이렇게 수정했더니 되는군요. 등호하나때문에 결과가 엄청나게 달라지는군요. 지적해 주셔서 감사 - 임인택 (radiohead4us)
----
----
[[소수구하기]]
[[소수구하기]]

Latest revision as of 01:08, 27 March 2026

#include <iostream.h>
#include <math.h>
#include <time.h>

int main()
{
	int tmp_arr[10000]={2,0};
	int cur_arr_index = 1;
	int i,j;
	bool flag;

	clock_t t = clock();
	

	for(i=3; i<50000; i++)	{
		flag = true;
		for(j=0; tmp_arr[j]<=sqrt(i); j++)
		//for(j=0; j<cur_arr_index; j++)
		{
			if(i%tmp_arr[j]==0)	{
				flag=false;
				break;
			}
			else continue;
		}
		if(flag) tmp_arr[cur_arr_index++]=i; 
	}

	/*double ti = clock()-t;
	double clk = CLOCKS_PER_SEC;
	cout << ti/clk << endl;*/

	/*for(i=0; i<cur_arr_index; i++)
		cout << tmp_arr[i] << ' ';*/

	
	double ti = clock()-t;
	double clk = CLOCKS_PER_SEC;
	cout << ti/clk << endl;

	return 0;
}
 

DeleteMe 50000까지의 소수는 총 5133개입니다. 위 코드는 더 많은 숫자를 출력합니다. sqrt부분을 잘 생각해 보세요.

  for(j=0; tmp_arr[j]<sqrt(i); j++) 
 이 부분을 
    for(j=0; tmp_arr[j]<=sqrt(i); j++)   
 이렇게 수정했더니 되는군요. 등호하나때문에 결과가 엄청나게 달라지는군요. 지적해 주셔서 감사 - 임인택 (radiohead4us)

소수구하기