IValueConverter 사용 데모
오늘 만든 폼에 사용해야 될 객체중 하나로 사용해본 후 기록함.
// 정의
public interface IValueConverter
{
object Convert(object value, Type targetType, object parameter, CultureInfo culture);
object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture);
}
xaml에서 표현하는 컨트롤이 checkbox이고 내부 데이타(DB코드값)는 숫자타입 0 : false, 0 이 아니면 true라고 한다면...
[ValueConversion( typeof(int), typeof(bool))]
public class IntToBoolenValueConverter : IValueConverter
{
#region IValueConverter 멤버
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int i = System.Convert.ToInt32(value);
return i != 0;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool b = System.Convert.ToBoolean(value);
return b ? 1 : 0;
}
#endregion
}
위와 같이 구현한다.
추가: ValueConversion 속성순서처럼
int -> bool은 convert메서드에서
bool -> int는 ConvertBack 메서드에서 각각 구현순서로 기억하면 편하다.
< 아래 소스 실행화면 >
/********************************************************************************************************
.xaml 내용
<Window x:Class="IValueConverterDemo.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Me="clr-namespace:IValueConverterDemo"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<ResourceDictionary>
<Me:IntToBoolenValueConverter x:Key="intToBoolenValueConverter" ></Me:IntToBoolenValueConverter>
<DataTemplate x:Key="ListBoxItemTemplate" >
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding Path=dtChecked, Converter={StaticResource intToBoolenValueConverter}}"></CheckBox>
<TextBlock Text="{Binding Path=dtText}"></TextBlock>
</StackPanel>
</DataTemplate>
</ResourceDictionary>
</Window.Resources>
<Grid>
<ListBox Name="LstBox" ItemsSource="{Binding}" ItemTemplate="{StaticResource ListBoxItemTemplate}" ></ListBox>
</Grid>
</Window>
.cs 내용
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data;
namespace IValueConverterDemo
{
/// <summary>
/// Window1.xaml에 대한 상호 작용 논리
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
DataTable dt = new DataTable();
dt.Columns.Add("dtChecked");
dt.Columns.Add("dtText");
dt.Rows.Add( 1, "0 to False , 1 to True");
dt.Rows.Add( 0, "0 to False , 1 to True");
LstBox.DataContext = dt;
}
}
[ValueConversion( typeof(int), typeof(bool))]
public class IntToBoolenValueConverter : IValueConverter
{
#region IValueConverter 멤버
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int i = System.Convert.ToInt32(value);
return i != 0;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool b = System.Convert.ToBoolean(value);
return b ? 1 : 0;
}
#endregion
}
}
'# 3) .Net ( Vs 2008 ) > WPF' 카테고리의 다른 글
WPF 에서 Keyboard 입력 하기 Winfom SendKeys 같은.. (0) | 2011.09.08 |
---|---|
FlexGrid : WPF 콤보 컬럼 (Combo Column Type) (0) | 2010.09.07 |
WPF 쓰레드 ( 프로그래스바 ) (0) | 2010.08.10 |
[WPF] Tab 순환코드 (0) | 2010.07.27 |
툴을 제작 해서 프로젝트를... 진행하다! (0) | 2010.02.26 |
[오라클] 내부 테이블 정보관련...
오라클은 아래 링크에서 확인 가능함.
http://blog.naver.com/kmymk?Redirect=Log&logNo=110082928906
'# 7) 데이타베이스 > 오라클' 카테고리의 다른 글
[ 토드 9.5 ]KEY 단축키 (0) | 2010.10.23 |
---|---|
[오라클] 간단한 쿼리인데 3개의 Row에 대해 계산식 적용하여 한행 추가 (0) | 2010.10.23 |
날 이틀동안 열폭하게 만든 스크립트.. (0) | 2010.09.10 |
임시테이블 (0) | 2010.09.10 |
오라클 프로시져 실행 (0) | 2010.09.09 |
아 또 다시 찾아오는 슬럼프인가???
음... 이랜드 플젝이 끝나고 새로 온 곳... 그냥 할말이 없다!
지하에 모기와... 겨울을 어찌 날까낭... 걱정이네...
이런저런 프로그램 설계만 해놓고 전혀 코드를 못치고 있다. 그냥 회사 일이나 조금 씩 하며
다시 의욕을 불태울날을 기다려보자.
그동안 영어나 좀 공부해둬야 되겠다.
음.. 슬럼프라... 내가 누릴수 있는것인가??/ 쩝!
'--- 취미 > 생각하기' 카테고리의 다른 글
다음 카페에서 보내온 쪽지 중... (0) | 2010.12.02 |
---|---|
[용어] 엥겔지수가 뭔가? (0) | 2010.11.18 |
침묵이 필요할때~~~ (0) | 2010.07.02 |
한순간에 방심으로 죽을뻔했다... (0) | 2010.05.03 |
[멋진글... (펌)]현재 하고 있는 세븐소울즈가 캐쉬템을 팔면서 올라온글... (0) | 2010.04.30 |
이미지 미리보기~
음 소스는 이미지 사이즈에 따라 조금 우측 픽쳐박스랑 싱크가 안맞기도 한데...
이건 이미지pixel값 가져올때 좌표계산이 살짝!!! 미스 나는것 같다..
머 그냥 쓸것도 아닌 구현해본정도니... 넘어감..
훈스 C# 질문게시판에 비슷한 게시글이 올라와서 구현해봤음.
'# 2) .Net ( Vs 2005 ) > 기타' 카테고리의 다른 글
IPC... 리모트 객체 수명이 5~6분? (0) | 2011.06.24 |
---|---|
[정규식] Replace~ (0) | 2010.09.14 |
글꼴 폰트 관련 MSDN 링크 (0) | 2010.08.10 |
소수 구하기 소스... (0) | 2010.08.06 |
[GDI+] Matrix 객체 사용해보기... (0) | 2010.07.27 |
피벗 메서드
쿼리상에서의 피벗은 집계함수를 적용해야 하는데...
챠트를 구현하면서 나온 데이타를 피벗할필요없이 특정 컬럼을 기준으로 대상데이타를 가로축으로 변경하고자 할때 사용하면 됨.
이하 소스.
그리드뷰 4개를 놓고 왼쪽은 기본데이타 오른쪽은 피벗된 데이타.
Pivot(DataTable sourceTb, string sBaseColumnName, string sBaseHeaderColumnName, string RotColumnName) : DataTable
소스 테이블, 컬럼이 될 데이타를 가진 컬럼명, 컬럼의 설명이 들어간 컬럼, 데이타컬럼
피봇 전 피봇 후
namespace PIVOT_TABLE
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
DataTable sourceTable = new DataTable();
sourceTable.Columns.Add("YM_MAGAM");
sourceTable.Columns.Add("CD_GMGS");
sourceTable.Columns.Add("DS_GMGS");
sourceTable.Columns.Add("AM_CURRENT1");
sourceTable.Rows.Add(201006, "F100000", "유동비율(%)", 120.2);
sourceTable.Rows.Add(201006, "F100100", "부채비율(%)", 367.6);
sourceTable.Rows.Add(201006, "F100200", "차입금의존도(%)", 63.3);
sourceTable.Rows.Add(201006, "F100300", "영업이익이자보상배율(배)", 0.1);
sourceTable.Rows.Add(200912, "F100000", "유동비율(%)", 130.3);
sourceTable.Rows.Add(200912, "F100100", "부채비율(%)", 207.0);
sourceTable.Rows.Add(200912, "F100200", "차입금의존도(%)", 47.8);
sourceTable.Rows.Add(200912, "F100300", "영업이익이자보상배율(배)", 2.4);
sourceTable.Rows.Add(200812, "F100000", "유동비율(%)", 135.8);
sourceTable.Rows.Add(200812, "F100100", "부채비율(%)", 107.2);
sourceTable.Rows.Add(200812, "F100200", "차입금의존도(%)", 27.0);
sourceTable.Rows.Add(200812, "F100300", "영업이익이자보상배율(배)", 2.7);
dataGridView1.DataSource = sourceTable;
dataGridView2.DataSource = Pivot(sourceTable, "CD_GMGS", "DS_GMGS", "AM_CURRENT1");
DataTable sourceTable1 = new DataTable();
sourceTable1.Columns.Add("YM_MAGAM");
sourceTable1.Columns.Add("AM_JUMSU");
sourceTable1.Rows.Add(200612, null);
sourceTable1.Rows.Add(200712, null);
sourceTable1.Rows.Add(200812, null);
sourceTable1.Rows.Add(200912, 27.5000);
sourceTable1.Rows.Add(201006, 20.0000);
dataGridView3.DataSource = sourceTable1;
dataGridView4.DataSource = Pivot(sourceTable1, "YM_MAGAM", "YM_MAGAM", "AM_JUMSU");
}
/// <summary>
/// 피벗 메서드.
/// 소스 데이타를 특정 컬럼 기준으로 컬럼으로 확장 후 데이타를 확장컬럼에 넣어서 반환해줌.
/// 추가 : 챠트에 쓰기 위해 NO를 추가해서 넘버링 함. ( 기준 BindingX 값으로 사용함 )
/// 추가 : 나머지 컬럼은 모두 제자리.
/// </summary>
/// <param name="sourceTb"> 변환 될 데이타 테이블</param>
/// <param name="sBaseColumnName"> 컬럼변경 데이타를 가진 컬럼명</param>
/// <param name="sBaseHeaderColumnName"> 컬럼에 대한 헤더컬럼.</param>
/// <param name="RotColumnName"> 옮겨질 데이타. </param>
/// <returns></returns>
DataTable Pivot(DataTable sourceTb, string sBaseColumnName, string sBaseHeaderColumnName, string RotColumnName)
{
DataTable dt = new DataTable();
int sBaseColumnIndex = sourceTb.Columns.IndexOf(sBaseColumnName);
int sBaseHeaderColumnIndex = sourceTb.Columns.IndexOf(sBaseHeaderColumnName);
int sRotColumnIndex = sourceTb.Columns.IndexOf(RotColumnName);
dt.Columns.Add("_NO");
for (int colIndex = 0; colIndex < sourceTb.Columns.Count; colIndex++)
{
if (sBaseColumnIndex == colIndex || sRotColumnIndex == colIndex || sBaseHeaderColumnIndex == colIndex) continue;
dt.Columns.Add(string.Format("_{0}", sourceTb.Columns[colIndex].ColumnName));
}
string ColName = string.Empty;
foreach (DataRow sBaseColumnRow in sourceTb.Rows)
{
ColName = sBaseColumnRow[sBaseColumnIndex].ToString();
if (!dt.Columns.Contains(string.Format("_{0}", ColName)))
{
dt.Columns.Add(string.Format("_{0}", ColName));
if (sBaseHeaderColumnIndex >= 0)
dt.Columns[dt.Columns.Count - 1].Caption = sBaseColumnRow[sBaseHeaderColumnIndex].ToString();
}
}
int offsetCol = sBaseHeaderColumnIndex == -1 ? 2 : 3;
// Row 한번에 뛰어넘을 간격을 계산함.
int step = dt.Columns.Count - (sourceTb.Columns.Count - offsetCol) - 1; // 1은 NO 컬럼 몫.
if (step <= 0)
{
throw new Exception("RowIndex 계산증가값은 0이하가 될수 없습니다.");
}
List<object> values = new List<object>();
for (int rowIndex = 0; rowIndex < sourceTb.Rows.Count; rowIndex += step)
{
values.Add(dt.Rows.Count + 1);
for (int colIndex = 0; colIndex < sourceTb.Columns.Count; colIndex++)
{
if (sBaseColumnIndex == colIndex || sRotColumnIndex == colIndex || sBaseHeaderColumnIndex == colIndex) continue;
values.Add(sourceTb.Rows[rowIndex][colIndex]); // 기존 컬럼 복사
}
for (int i = 0; i < step; i++) // 세로로 된 기준 컬럼데이타를 가로로 복사함.
{
if (sourceTb.Rows.Count <= rowIndex + i) break;
values.Add(sourceTb.Rows[rowIndex + i][sRotColumnIndex]);
}
dt.Rows.Add(values.ToArray<object>());
values.Clear();
}
return dt;
}
}
}
'# 1) 프로그래밍' 카테고리의 다른 글
일자가 해당 월에 몇주차인지 구하는 법. (0) | 2010.09.30 |
---|---|
DateTime관련.. (0) | 2010.09.09 |
새로운 프로젝트 & 6월에 나의 프로젝트! (0) | 2010.06.03 |
이름을 잘짓자! 한글로 코딩을... (0) | 2010.05.26 |
변수명, 메서드명... 이름짓기어렵다!! (0) | 2010.05.26 |
[MS-SQL] 피벗 ..
간만에 쿼리 쓸라니 기억이 안나서 어렵군...
갑자기 피벗 쓸일이 있었는데... 가물 가물한 기억땜시롱...
간단한 예제로 써놓는답.
SELECT y, sum( case c when 'A' then i else 0 end ) AS AColumn ,sum( case A.c when 'B' then i else 0 end ) AS BColumn
FROM
(
SELECT '200812' AS Y , 'A' AS C, '1' AS I
UNION
SELECT '200812', 'B', '2'
)a
group by A.y
결과
Y AColumn BColumn
200812 1 2
Sum이 기억이 안나서 무진장 헤맸뉑...
CTE는 왜이리 어렵누..
추가 ~~~ : 반대로 할경우!!!
SELECT A.A, CASE B.[K] WHEN 1 THEN A.[1]
WHEN 2 THEN A.[2]
WHEN 3 THEN A.[3]
WHEN 4 THEN A.[4]
WHEN 5 THEN A.[5] END AS M
FROM
(
SELECT 'A' [A], 1 [1], 2 [2],3 [3],4 [4],5 [5]
)A
,
(
SELECT 1 K
UNION ALL
SELECT 2 K
UNION ALL
SELECT 3 K
UNION ALL
SELECT 4 K
UNION ALL
SELECT 5 K
)B
'# 7) 데이타베이스 > Ms-Sql' 카테고리의 다른 글
[MS-SQL] 누적 계산에 사용한 쿼리... (0) | 2010.10.23 |
---|---|
[MS-SQL] SELECT 쿼리.. (0) | 2010.10.23 |
[ MS-SQL ] 간단한 쿼리인데 3개의 Row에 대해 계산해서 한행 추가 (0) | 2010.10.23 |
하루 종일 쌩쑈하다. (0) | 2009.08.13 |
MS-SQL 에서의 한글 자음으로의 검색... (0) | 2009.06.26 |
Ms Access 사용하기 예제소스.
훈스에서 게임만드시는것 같은뎅... 졸작하시는것도 같은.. 질문에
잠깐 짬내서 만들어봤다.
Access 라해서 엑셀인가 했는데 MsAccess를 찾으니 mdb로 나온다.
이 예제는 간단히 mdb를 Com dll을 이용해서 생성하고 테이블을 만든 후
데이타 저장및 쿼리등을 할수 있다.
'# 3) .Net ( Vs 2008 ) > C#' 카테고리의 다른 글
MS-Chart Demo (0) | 2010.11.05 |
---|---|
포스트 잇 처럼 메모하는 레이아웃!! (0) | 2010.09.30 |
WebClient와 WebBrowser의 차이는?? (3) | 2010.07.30 |
LINQ 그룹바이... 훌... (0) | 2010.07.30 |
Double.Parser()... (0) | 2010.07.19 |
글꼴 폰트 관련 MSDN 링크
http://msdn.microsoft.com/ko-kr/library/a3a2bads(VS.90).aspx
Windows/Font 폴더가 아닌 다른 위치에 폰트파일을 읽어서 사용할수 있는가? 라는 질문이 훈스 게시판에 올라왔기에
잠깐 뒤져보다가 찾았다.
privateFontCollection 이란 객체가 있고
AddFontFile( "파일경로" ); 를 통해 추가해서 사용할 수 가 있다.
그리고 지난번에 Text 관련해서 라인 번호 넣는 처리 할때 폰트별 라인 공백이라든가 위치값에 필요한 인자값들에 대한 정보도 Font.FontFamily 의 메서드로 지원이 되는것을 확인하였다.
'# 2) .Net ( Vs 2005 ) > 기타' 카테고리의 다른 글
[정규식] Replace~ (0) | 2010.09.14 |
---|---|
이미지 미리보기~ (0) | 2010.08.31 |
소수 구하기 소스... (0) | 2010.08.06 |
[GDI+] Matrix 객체 사용해보기... (0) | 2010.07.27 |
IFormattable (0) | 2010.07.15 |
WPF 쓰레드 ( 프로그래스바 )
WPF 에 프로그래스 바를 사용할때!! 무거워서일까낭..?? 프로그래스에 진행도가 제대로 표현되지 않아서
쓰레드를 보았다.
아래 소스는 두가지를 주안점으로 했다.
첫번째 대리자 비동기 호출은 데브피아에서 비동기 구현관련해서 강좌를 보고 ...
( 전에 공부했던 내용이었는데 기억이 안나는건... )
두번째 Thread내에서의 Invoke를 이용해 대리자로써 메서드를 위임하는 부분이 WPF에서는 어찌 되는가를 알아보았다.
# 막상 Invoke를 써보니 Winform과 크게 다른건 없다. Dispatcher라는 프로퍼티에 Invoke를 이용할뿐이다.
TextBox, Button, ProgressBar 이렇게 구성되어 있다.
/// <summary>
/// Window1.xaml에 대한 상호 작용 논리
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
public delegate void delegateSetTextRender(object i, int cnt);
public void SetTextRender(object i, int cnt)
{
textBox1.AppendText(i.ToString() + "\r\n");
progressBar1.Value = cnt;
}
public void INProgressValue(int Progress)
{
progressBar1.Value = Progress;
}
public void INProgressMaxValue(int Progress)
{
progressBar1.Maximum = Progress;
}
public void INProgressMinValue(int Progress)
{
progressBar1.Minimum = Progress;
}
public delegate void delegateProgress(int i);
const int SEARCHCOUNT = 20000;
private void button1_Click(object sender, RoutedEventArgs e)
{
// 기본쓰레드로 할때
//Thread th = new Thread(new ThreadStart( DoEvent ));
//th.Start();
// 비동기로 구현할 때.
Action ac = new Action(DoEvent);
AsyncCallback async = new AsyncCallback(_EndInvoke);
IAsyncResult ir = ac.BeginInvoke(async, ac);
}
void _EndInvoke( IAsyncResult iar )
{
Action ac = iar.AsyncState as Action;
while (iar.IsCompleted == false)
{
Thread.Sleep(100);
}
ac.EndInvoke(iar);
}
/// <summary>
/// ///////////////////////////////////////////////////
/// </summary>
void DoEvent()
{
this.Dispatcher.Invoke(new delegateProgress(INProgressValue), new object[] { 0 });
this.Dispatcher.Invoke(new delegateProgress(INProgressMaxValue),
new object[] { SEARCHCOUNT });
this.Dispatcher.Invoke(new delegateProgress(INProgressMinValue), new object[] { 0 });
List<int> sosuList = new List<int>();
sosuList.Add(2);
// 검사대상수 1과 2는 건너뜀...
int number = 3;
// 소수 3만개 찾기위한 루프
while (sosuList.Count <= SEARCHCOUNT)
{
// 소수 검사 결과 일단은 소수라고 의심
bool result = true;
// 소수 검사
double stopNumber = Math.Sqrt(number);
foreach (int i in sosuList)
{
if ((number % i) == 0)
{
result = false;
break;
}
if (i > stopNumber) break;
}
// 진짜 소수면 리스트에 저장
if (result)
{
this.Dispatcher.Invoke(new delegateProgress(INProgressValue),
new object[] { sosuList.Count });
sosuList.Add(number);
}
// 검사대상 수 증가
number++;
// 검사수에 제한을 둠
if (number > 20000000) break;
}
// this.Dispatcher.Invoke(new delegateProgress(INProgressValue),new object[] { 0 });
// 추가적으로 파라미터 Thread !!를 구현하는 방법이다.
Thread th = new Thread(new ParameterizedThreadStart(Dispaly));
th.Start(sosuList);
}
void Dispaly(object prms)
{
IList<int> sosuList = prms as IList<int>;
int cnt = sosuList.Count;
foreach (int val in sosuList)
{
this.Dispatcher.Invoke(new delegateSetTextRender(SetTextRender),
new object[] { val, --cnt });
// this.textBox1.AppendText(val.ToString() + "\r\n");
}
}
}
'# 3) .Net ( Vs 2008 ) > WPF' 카테고리의 다른 글
FlexGrid : WPF 콤보 컬럼 (Combo Column Type) (0) | 2010.09.07 |
---|---|
IValueConverter 사용 데모 (0) | 2010.09.06 |
[WPF] Tab 순환코드 (0) | 2010.07.27 |
툴을 제작 해서 프로젝트를... 진행하다! (0) | 2010.02.26 |
WPF 3D (0) | 2009.12.29 |
소수 구하기 소스...
다음 닷넷 카페에서 소수구하기 2~ 30000 내의 소수 구하기 타임어택을 해본다고 하기에... 나도 한번 해봤다
if와 continue가 소비시간을 그렇게 먹을줄 몰랐넹...
추가하면 할수록 느려지다뉭...
bool print = true;
for (short i = 2; i < 30000 ; i++){
for (short j = 2; j < i ; j++){
if (i % j == 0){
print = false;break;
}
}
if (print == true){
Console.WriteLine( i.ToString());
}
print = true;
}
TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - dt);
MessageBox.Show( ts.ToString() );
VS2005 , CPU : 쿼드 Q8300 , 램 : 4G, OS : XP
이게 가장 빠른 시간이 0.4218750 초이답... 0.4375000...
할때마다 다른데...
릴리즈로 하면 0.1초 빨라짐.
추가 : ...
워... 2~3만이 아니라 2부터 소수 3만개였다.
3만개 띠웠더니 8초 좀 안되넹..
다른 방법을 찾아봤더니 제곱근 이용하는 방법이 있었다.
//제곱근을 이용하여 체크. http://hisjournal.net/blog/128
bool CheckByRoot(int num){
int rootNum = (int)Math.Sqrt((double)num);
int div = 0;
bool value = false;
for(div = rootNum; num % div != 0; div--);
if(div == 1) value = true;
else value = false;
return value;
/*http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Board&no=8479
"모든 정수는 대칭하는 두수의 곱으로 나타낼수 있다"의 특성을 이용해
연산시간을 획기적으로 줄였습니다 -_-;;
여기서는 두 정수의 곱으로만 나타냈지만 실제로는 실수로도 가능합니다.
3루트3 * 2루트3 로도 나타낼수 있죠.
하기위해서는 대칭되어지는 점[입력값의 루트값 즉 sqrt()함수를 이용한 결과값]
까지만 연산을 해주면 된다는 결론이 나옵니다.
내고 for문의 범위를 이 변수의 값까지로 한정시켰습니다.
정수의 소수확인시 1초도 안걸립니다.....
다.
}
이거 적용해도 ... 그닥.. 0.0625초는 안나온다.
소인수분해를 이용해서 소스를 작성했으나... 실패했다.
이유인즉 소수를 찾기위해 수를 소수로 인수분해하려면 소수값을 가지고 있어야 하는데 꾀나 많은 소수들이 있어야 한다는... 벽에 부딪혔다. 30개를 가지고 131까지도 계산 못한다..
int CheckBy(int num)
{
/*소인수분해 .
소인수분해를 할때는 가장 작은 소수부터 나누는게 좋습니다.
int[] primeNum = new int[] {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127};
List<int> ar = new List<int>();
int primeIndex = 0;
int TempValue = 0;
int modTempValue = 0;
int primeCount = 0;
TempValue = num;
do
{
if( TempValue == 1 )
{
ar.Add(TempValue);
break;
}
{
ar.Add(TempValue);
TempValue = TempValue / primeNum[primeIndex];
}
else
{
primeIndex++;
}
} while (true); // 3개부터는 ~
return ar.Count;
}
줸장 ㅡ,.ㅡ;;
0.0625초는 대체 어떻게 나온거쥐?
실패했따 ㅡ.,ㅡ;;; 슬프다..
추가
카페에 갔더니 소스가 올라왔다... 봤더니 ~~ 와!! 대박!...
출력까지 포함시켜도 2초 정도 나온다.
제곱근과 소인수분해를 복합적으로 적용시켜놓은 소스였다...
감탄뿐이 안나옴... 알고리즘 공부 좀 다시 해야겠다.
'# 2) .Net ( Vs 2005 ) > 기타' 카테고리의 다른 글
이미지 미리보기~ (0) | 2010.08.31 |
---|---|
글꼴 폰트 관련 MSDN 링크 (0) | 2010.08.10 |
[GDI+] Matrix 객체 사용해보기... (0) | 2010.07.27 |
IFormattable (0) | 2010.07.15 |
트리노드 검색해서 확장하기... (0) | 2010.03.17 |