약수를 모두 찾는 수학 문제를 풀다가 지친 X는 컴퓨터의 도움을 받아 문제를 풀어 보기로 하였다. 하지만 계산기를 이용하자니 계산기로 하고 싶지만 찾기도 어려우며, 쉽게 찾아낼 수도 없었다.
풀이에 지친 그는 결국 약수들이 가지고 있는 특징을 찾아 결국 몇시간에 걸쳐 복잡한 수라도 약수를 찾아줄 수 있고 개수도 알려주는 프로그램을 짜게 된다.
다음은 약수를 얻기 위한 입력과 출력 예제들이다.
입력 1
24
출력 1
{ 1, 2, 3, 4, 6, 8, 12, 24}
약수의 개수는 8개 입니다.
입력 2
36
출력 2
{ 1, 2, 3, 4, 6, 9, 12, 18, 36 }
약수의 개수는 9개 입니다.
입력 3
2468013579
출력 3
{ 1, 3, 9, 61, 183, 549, 4495471, 13486413, 40459239, 274223731, 822671193, 2468013579 }
약수의 개수는 12개 입니다.
90개의 풀이가 있습니다.
import math
n = int(input())
def divisor_make(n):
divisor_list = []
for i in range(1, int(math.sqrt(n))):#수정부분
if n % i == 0:
divisor_list.append(i)
divisor_list.append(n//i) #수정부분
print(divisor_list)
print("약수의 개수는 %d개 입니다." %len(divisor_list))
divisor_make(n)
큰 수 구할 때 시간 줄이는거는 좀더 생각해서 수정해 보도록 하겠습니다!!!
-> 수정 나누는 제일 큰 수를 제곱근으로 하니까 시간이 확 줄어드네요!!
import math
n = int(input())
def divisor_make(n):
divisor_set = set([])
for i in range(1, int(math.sqrt(n)+1)):
if n % i == 0:
divisor_set.add(i)
divisor_set.add(n//i)
divisor_list=list(divisor_set)
divisor_list.sort()
print(divisor_list)
print("약수의 개수는 %d개 입니다." %len(divisor_list))
divisor_make(n)
#include <stdio.h>
int main(void)
{
int num = 0;
int cnt = 0;
int i;
printf("약수를 찾을 수를 입력하십시요 : ");
scanf_s("%d", &num);
printf("\n%d 의 약수를 찾습니다.",num);
printf("( ");
for (i = 1; i <= num; i++)
{
if (num % i == 0)
{
printf("%d ", i);
cnt++;
}
}
printf(")\n");
printf("약수의 개수는 %d개 입니다.\n", cnt);
return 0;
}
import java.util.Scanner;
public class Yaksoo {
public static void main(String[] args) {
int arr[] = new int[100];
int num, cnt;
Scanner sc = new Scanner(System.in);
System.out.print("숫자를 입력하세요 : ");
cnt = sc.nextInt();
num = 0;
System.out.print("{ ");
for(int i=1 ; i <= cnt/2 ; i++)
{
if(cnt%i == 0)
{
System.out.print(i + ", ");
num += 1;
}
}
System.out.println(cnt + " }");
System.out.print("약수의 개수는 " + num + "개 입니다.");
}
}
댓글보고 수정했습니다 ! 그런데 밑에분이랑 거의 똑같네요 코드가 ㅎ
package codingdozang;
import java.util.Scanner;
public class submultiple {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
double x=in.nextDouble();
int count=0;
System.out.print("{");
for(double i=1;i<x;i++) {
if(x%i==0) {
System.out.print((int)i+",");
count++;
}
}System.out.print((int)x);
System.out.println("}");
System.out.println("약수의 개수는:"+(count+1));
}
}
<1번> 24 {1,2,3,4,6,8,12,24} 약수의 개수는:8
36 {1,2,3,4,6,9,12,18,36} 약수의 개수는:9
2468013579 {1,3,9,61,183,549,4495471,13486413,40459239,274223731,822671193,2147483647} 약수의 개수는:12
<2번> 123456789 {1,3,9,3607,3803,10821,11409,32463,34227,13717421,41152263,123456789} 약수의 개수는:12
#n = int(input())
for n in [24, 36, 2468013579]:
div = {x for x in range(1, int(n ** 0.5)+1) if n % x == 0}
div |= {n // x for x in div}
print('{', *sorted(div), '}')
print(f'약수의 개수는 {len(div)}개 입니다.')
Ruby
소수로 반복해서 나눈 뒤 조합
def find_factors(num, prime=2, primes=Hash.new(0))
(num % prime == 0 ? ( num /= prime; primes[prime]+=1) : prime+=1 ) until prime > num
factors = [1].product(*primes.map {|k,g| (0..g).map {|e| k**e}}).map {|e| e.reduce:*}
puts "{ #{factors.sort.join(', ')} }", "약수의 개수는 #{factors.size}개 입니다."
end
Test
divisors = {24 => "{ 1, 2, 3, 4, 6, 8, 12, 24 }\n",
36 => "{ 1, 2, 3, 4, 6, 9, 12, 18, 36 }\n",
2468013579 => "{ 1, 3, 9, 61, 183, 549, 4495471, 13486413, 40459239, 274223731, 822671193, 2468013579 }\n",
123456789 => "{ 1, 3, 9, 3607, 3803, 10821, 11409, 32463, 34227, 13717421, 41152263, 123456789 }\n" }
expect{ find_factors(24) }.to output(divisors[24] + "약수의 개수는 8개 입니다.\n").to_stdout
expect{ find_factors(24) }.to output(divisors[36] + "약수의 개수는 9개 입니다.\n").to_stdout
expect{ find_factors(2468013579) }.to output(divisors[2468013579] + "약수의 개수는 12개 입니다.\n").to_stdout
expect{ find_factors(123456789) }.to output(divisors[123456789] + "약수의 개수는 12개 입니다.\n").to_stdout
# performance
require 'Benchmark'
cases = [24, 36, 2468013579, 123456789, 10**10]
cases.each {|num| puts "[#{num}] %5f" % Benchmark.realtime { find_factors(num) } }
#=> [24] 0.000296
#=> [36] 0.000265
#=> [2468013579] 0.139300
#=> [123456789] 0.000366
#=> [10000000000] 0.001098
import java.util.Scanner;
public class 약수 {
public static void main(String args[]) {
int count = 0;
Scanner s = new Scanner(System.in);
long input = s.nextLong();
if(input>0) { //입력한 숫자가 양의 정수일 때
System.out.print("{ ");
for(int i=1; i<input; i++) {
if(input%i == 0) {
count++;
System.out.printf(i+", ");
}
}
System.out.println(input+" }");
count++;
System.out.println("약수의 개수는 "+count+"개 입니다.");
}else {
System.out.println("양의 정수만 입력해 주세요");
}
}
}
%m 의 약수,matlab code
clear
clc%초기화
m=input('수 입력: ');
count=1;%리스트 번호
fprintf('{\t%d',1);%어떤 수든 1과 자기자신은 항상 약수로 가짐
for i=2:1:sqrt(m)
if rem(m,i)==0
ls(count)=i;
ls(count+1)=m/i;%제수,몫
if i==m/i
ls(count+1)=[];
end
count=count+2;
end
end
fprintf(',%d\t',sort(ls));%오름차순 정렬
fprintf(', %d}\n',m);
fprintf('약수의 개수는 %d 개 입니다\n',length(ls)+2);%1과 자기자신 포함
int main()
{
int a[] = {0};
int i = 0; // 입력받을 수
int j = 0; // 약수의 갯수
int k = 0; // 배열의 인덱스
int c = 1; // 입력받을 수를 나눌 수
int d = 0;
printf("약수의 갯수와 약수들을 구할 숫자를 입력학세요(정수) :");
scanf("%d", &i);
while (c <= i) //c가 i보다 커질때까지 실행
{
if (i%c == 0) //i를 c로 나누었을 때 나머지가 0 이라면
{
a[k] = c;
j++; //약수의 갯수 1증가
k++; //배열의 인덱스 1증가
c++; //제수 1증가
}
else //i를 c로 나누었을 때 나머지가 0이 아니라면
{
c++; //c를 1증가
}
}
printf("{");
for (d=0;d<k;d++)
{
printf("%d\t",a[d]);
}
printf("}\n");
printf("약수의 개수는 %d개입니다.", j);
return 0;
}
number = input() element = []
for num in range(1, (int(number) // 2) ) : if int(number) % num == 0 : element.append(num) element.append(int(number) // num) if num > int(number) // num : break
element.sort() print(element,"\n약수의 개수는 %d개 입니다." % len(element))
#include<stdio.h>
int main(void)
{
int num,i,cn=0,k=0;
printf("숫자를입력하시오:");
scanf("%d",&num);
for(i=1;i<=num;i++)
{
if(num%i==0)
{
cn++;
}
}
int num_arr[cn];
for(i=1;i<=num;i++)
{
if(num%i==0)
{
num_arr[k]=i;
k++;
}
}
for(i=0;i<=cn-1;i++)
{
printf("%d ",num_arr[i]);
}
printf("\n약수의 갯수는:%d개입니다.",cn);
return 0;
}
try:
x = int(input("정수 입력: "))
result = []
for i in range(1,x):
if x % i == 0:
result.append(i)
print(result)
print("약수의 개수는 %.f개 입니다." % len(result))
except:
print("반드시 입력은 정수여야 합니다.")
Swift입니다.
func getDividers() -> [Int] {
print("숫자를 입력하세요: ", terminator: "")
let number = Int(readLine()!)!
var dividers = [Int]()
for divider in 1...(number / 2) {
if number % divider == 0 {
dividers.append(divider)
}
}
dividers.append(number)
return dividers
}
func printDividers(_ dividers: [Int]) {
let count = dividers.count
print("{", terminator:"")
for (index, divider) in dividers.enumerated() {
print("\(divider)", terminator: "")
if index != count - 1 {
print(", ", terminator: "")
}
}
print("}")
print("약수의 개수는 \(count)개 입니다.")
}
printDividers(getDividers())
실행결과는...
숫자를 입력하세요: 123456789
{1, 3, 9, 3607, 3803, 10821, 11409, 32463, 34227, 13717421, 41152263, 123456789}
약수의 개수는 12개 입니다.
Java 8
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
import java.util.function.DoublePredicate;
import java.util.stream.DoubleStream;
import java.util.stream.LongStream;
import java.util.stream.Stream;
public class Test {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
List<Long> list = new ArrayList<>();
long input = s.nextLong();
long inputSqrt = (long) Math.floor(Math.sqrt(input) + 1);
LongStream.rangeClosed(1, inputSqrt).filter(i -> (input%i) == 0).forEach(i -> {
list.add(i);
if ((input/i) != i) {
list.add(input/i);
}
});
// 정렬
Collections.sort(list);
System.out.println(list);
System.out.println(String.format("약수의 개수는 %d 개 입니다.", list.size()));
}
}
data = int(input("정수를 입력하세요 : "))
list = []
for i in range(1, data+1):
if data % i == 0:
list.append(i)
print(list)
print(f'약수의 갯수는 {len(list)}개 입니다.')
입력 받은 정수를 1 부터 입력받은 수 까지 나누어 몫이 0인 값들만 리스트에 저장 후 출력하고 약수의 갯수는 리스트에 담겨 있는 항목들의 수를 세어 출력 합니다.
PYTHON 2.7
data = input("please enter number : ")
print data
yaksulist = []
for i in range(1, data/2):
if data%i == 0:
yaksulist.append(i)
yaksulist.append(data/i)
yaksulist.sort()
print yaksulist
print 'The nunber of yaksu is %d' % len(yaksulist)
import java.util.Scanner;
public class Ex08 {
public static void main(String[] args) {
// 수를 입력받아 약수들과 갯수를 출력하는 프로그램
Scanner sc = new Scanner(System.in);
System.out.print("수를 입력하시오 >>");
int num = sc.nextInt();
int sqNum = (int)Math.sqrt(num);
int[] div = new int[sqNum*2];
int cnt = 0;
int add = 0;
for(int i = 1; i<= sqNum; i++) {
if (num % i == 0 && num != i*i) {
div[cnt] = i;
div[sqNum*2-cnt-1] = num/i;
cnt ++;
}else if (num == i*i) {
div[cnt] = i;
add = 1;
}
}
cnt = cnt * 2 + add;
System.out.print("{1");
for (int i = 1; i < div.length; i++) {
if (div[i] != 0) {
System.out.print(", "+div[i]);
}
}
System.out.println(String.format("}\n%d의 약수의 개수는 %d개 입니다.", num, cnt));
}
}
//반복을 줄이기 위해 제곱근을 사용했고 약수들을 작은 수 부터 출력하기 위해 제곱근의 두배 만큼의 배열을 써서 양끝부터 채웠습니다. // 자바 이제 2주차인데 정신없네요 ㅋㅋ
javascript
let input = 24
let arr = [];
for(let i = 1; i <= input; i++) {
if(input % i == 0) {
arr.push(i);
}
}
console.log(`{${arr}}\n약수의 개수는 ${arr.length}개 입니다.`);
python
input_num = int(input('숫자를 입력 하세요: '))
lst_num = []
for i in range(1, input_num + 1):
if input_num % i == 0:
lst_num.append(i)
print(f'{lst_num}\n약수의 개수는 {len(lst_num)}개 입니다.')
주어진 수를 소수들로 나누어 조합가능한 모든 수들을 찾아내었습니다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.LongStream;
import java.util.stream.Stream;
/**
* @see http://codingdojang.com/scode/638
* @date 2018. 12. 3
*/
public class Problem638 {
public static void main(String[] args) {
final long INPUT = 123456789L;
// 모든 소수값들을 찾음 (e.g. 24 => [2, 2, 2, 3])
final List<Long> primeNumbers = searchPrimeNumbers(INPUT);
// System.out.println(INPUT + "의 소수들 = {" + primeNumbers.stream().map(String::valueOf).collect(Collectors.joining(", ")) + "}");
final int SIZE = primeNumbers.size();
// 찾은 소수값으로 모든 경우의 값을 찾음 (e.g. [2, 2, 2, 3] => 곱으로 나올 수 있는 모든 값을 찾음)
final long scenarioSize = (long) Math.pow(2, SIZE); // e.g. [2, 2, 2, 3] 으로 나올 수 있는 곱의 경우의 수 = 2^4
final List<Long> divisors = LongStream.range(0, scenarioSize)
.map(scenario -> {
// 각 자리를 곱할지 말지를 2진수 형태로 나타낸것
// 3.g. 16가지경우 = [[0], [1], [0,1], [1,1], ... [0,1,1,1], [1,1,1,1]]
List<Integer> scenarioBinary = Stream.of(Long.toBinaryString(scenario).split("")).map(Integer::valueOf).collect(Collectors.toList());
Collections.reverse(scenarioBinary);
// System.out.println(scenarioBinary.stream().map(String::valueOf).collect(Collectors.joining(",")));
final int listSize = Math.min(scenarioBinary.size(), SIZE);
long divisor = 1;
for (int i = 0; i < listSize; i++) {
if (scenarioBinary.get(i) == 1) { // 1로 표시된 자리에 해당하는 소수값만 곱함
divisor = divisor * primeNumbers.get(i);
}
}
return divisor;
})
.boxed()
.distinct()
.sorted()
.collect(Collectors.toList());
// 출력
System.out.println(String.format("{ %s }", divisors.stream().map(String::valueOf).collect(Collectors.joining(", "))));
System.out.println(String.format("약수의 개수는 %d개 입니다.", divisors.size()));
}
/**
* 주어진 값의 소수값들 집합을 찾음 <br>
* 입력값을 소수*(남은값) 형태로 만들고, (남은값)으로 다시 재귀호출 <br>
* @param value
* @return
*/
private static List<Long> searchPrimeNumbers(long value) {
List<Long> divisors = new ArrayList<>();
for (long divisor=2; divisor<value; divisor++) {
if (value % divisor == 0) { // 나누어질경우
divisors.add(divisor); // 이값은 소수
divisors.addAll(searchPrimeNumbers(value/divisor)); // 이 (남은값)으로 다시 소수를 찾음-재귀호출
break;
}
}
if (divisors.isEmpty()) { // 나누어지는 값이 없으면 그 자체가 소수
divisors.add(value);
}
return divisors;
}
}
{ 1, 3, 9, 3607, 3803, 10821, 11409, 32463, 34227, 13717421, 41152263, 123456789 }
약수의 개수는 12개 입니다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class T2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("값을 입력해주세요 :: ");
long num = sc.nextLong(); //입력받은 값
long num1 = (long)Math.sqrt(num); //입력받은 값의 제곱근
ArrayList<Object> array = new ArrayList<>();
ArrayList<Object> array2 = new ArrayList<>();
for (long i = 1; i <= num1; i++) { // 제곱근으로 약수 구하기
if(num % i == 0) {
array.add(i); //제곱근으로 구한 약수
array2.add(num/i); //입력받은 값 나누기 약수 = 제곱근으로 구한값보다 이상값이 나옴.
}
if(i == num1) {
Collections.reverse(array2); // 리스트 역순 설정
for (int j = 0; j < array2.size(); j++) {
array.add((long)array2.get(j)); // 리스트 내용 합치기
}
}
}
System.out.println(array);
System.out.println("약수는 총 " + array.size() + " 개 입니다.");
}
}
입력값 : 2468013579 [1, 3, 9, 61, 183, 549, 4495471, 13486413, 40459239, 274223731, 822671193, 2468013579] 약수는 총 12 개 입니다.
입력값 :: 123456789 [1, 3, 9, 3607, 3803, 10821, 11409, 32463, 34227, 13717421, 41152263, 123456789] 약수는 총 12 개 입니다.
값을 구하는건 어렵지 않은데 숫자가 커지면 속도이슈가 발생하네요 다른 분 코드에 제곱근 이란 걸 보고 찾아보며 속도 이슈 또한 해결하여 작성하였습니다. (수학이 너무 약해서 제곱근,약수, 이값들로 다시 원래값을 찾는것이 잘 이해가 안가 고생했습니다 ㅠ)
쉽게 설명드리자면 입력값 2468013579 의 제곱근인 49679 를 구하여 반복문을 실행하는 것입니다.
제곱근으로 구할시 2468013579 약수는 [1, 3, 9, 61, 183, 549] 입니다(한번해보세요) 그럼 먼저 나온 이 값을 array리스트에 담고
입력값 / 약수 의 값을 array2리스트에 담습니다.
입력값 약수 결과값
2468013579 / 1 = 2468013579 2468013579 / 3 = 822671193 2468013579 / 9 = 274223731 2468013579 / 61 = 40459239 2468013579 / 183 = 13486413 2468013579 / 549 = 4495471
위에 값을 보면 아시겠지만 입력값 / 현재 구한(제곱근을 이요해) 약수값 해보면 현재 제곱근보다 큰 약수값이 나옵니다.
모두 값을 구하면 array2의 내용을 역순으로 다시 돌려줍니다(순서에 맞게 보려면) 그후 array2의 내용을 array리스트에 add후 출력하면 끝입니다.
설명을 엄청 길게 썻는데 제가 수학적인 부분이 많이 모자라 쉽게 설명을 못드리네요ㅠㅠ 최대한 제가 이해한 대로 설명했습니다.
//////////////////////////////////////////////////// 흠 ㅠㅠ 띠 색이 안변해서 댓글이 안달리네요
17의 제곱근은 4입니다. 처음 1일때 1번 리스트에는 1이 2번리스트에는 17이 들어갑니다 (17/1=17) 반복문은 제곱근의 값과 동일하거나 크기전까지 만 작동하니 제곱근인 4가되면 리스트 정렬부분으로 넘어가 출력되게 됩니다. 즉 1번은 1만 2번은 17 1번+2번 합쳐져 1,17만나옵니다.
제곱근 값은 계산시 조건으로만 사용하며 계산식에 들어가는 값은 아닙니다.
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
int idx=0;
String arr_num[], str_num="";
for(int i=1; i<=num; i++) {
if(num%i==0) {
str_num+=Integer.toString(i)+"|";
idx++;
}
}
arr_num=new String[idx];
arr_num=str_num.split("\\|");
System.out.print("{ ");
for(int j=0; j<idx-1; j++) {
System.out.print(arr_num[j]+", ");
}
System.out.println(arr_num[idx-1]+" }");
System.out.println("약수의 개수는 "+idx+"개 입니다.");
import math
val = int(input())
buf1 = []
buf2 = []
for i in range(1,int(math.sqrt(val))+1):
if val%i == 0:
buf1.append(i)
buf2.append(val//i)
result = list(set(buf1+buf2))
result.sort()
for i in result:
if i == 1:
print("{ " + str(i), end="")
elif i == val:
print(", " + str(i) + " }")
else:
print(", " + str(i), end="")
print("약수의 개수는 {0}개 입니다.".format(len(result)))
def yak(n):
result = []
for i in range(1,n+1):
if n % i == 0:
result.append(i)
print(result)
print('약수는 {0}개 입니다.'.format(len(result)))
x = int(input('Take Number : '))
yak(x)
public static void main(String[] args) {
System.out.print("숫자를 입력하세요. : ");
Scanner input = new Scanner(System.in);
int num = input.nextInt();
divisor(num);
}
public static void divisor(int num) {
ArrayList divisor = new ArrayList();
for(int i=1;i<=num;i++) {
if(num % i ==0) {
divisor.add(i);
}
}
System.out.println(divisor);
System.out.println("약수의 개수는 "+divisor.size()+"개 입니다.");
}
import math
def divisior(n=12):
lst=[]
limit = int(math.sqrt(n))+1
for i in range(1,limit):
mok, rest = divmod(n,i)
if rest == 0:
if i != mok :
lst.append(i)
lst.append(mok)
else:
lst.append(i)
return lst
def main():
d = divisior(2468013579)
print(" {} \n the number of divisior {} ".format(d, len(d)))
main()
#include <stdio.h>
int main(int argc, char** argv) {
int input;
int su=0;
scanf("%d",&input);
printf("{ ");
for(int i=1; i<=input; i++) {
if(input%i == 0) {
printf("%d, ",i);
su++;
}
}
printf("}\n약수의 개수는 %d개입니다",su);
return 0;
}
#HiCode
def find(x):
a = [i for i in range(1,x+1) if x%i==0]
print(a)
print('약수늬 개수는 %d개 입니다.' % len(a))
find(24)
#[1,2,3,4,6,8,12,24]
#약수의 개수는 8개 입니다.
namespace codingdojang__
{
class Program
{
static void Main(string[] args)
{
HashSet<int> overlap = new HashSet<int> { };
int total = 0;
int input = 123456789;
for (int i = 1; i <= input; i++)
{
if (input % i == 0)
{
overlap.Add(i);
}
}
foreach (var c in overlap)
{
Console.Write(c + ", ");
}
total = overlap.Count;
Console.WriteLine("약수의 개수는 {0}개 입니다.", total);
}
}
}
```{.python}
```num=int(input("숫자 입력:")) list=[] for i in range(1,num+1): if num%i==0: list.append(i) print(list)
origin = int(input())
cnt = 0
print('{',end='')
for i in range(1,origin+1,1):
if origin % i == 0:
cnt +=1
if i != origin:
print(f" {i},",end='')
else:
print(f" {i}",end='')
print(' }')
print(f'약수의 개수는 {cnt}개 입니다.')
# 209_aliquot.py
import math
num = int(input("Enter a number : "))
aset = set()
for i in range(1,round(math.sqrt(num))):
if num % i == 0:
aset.add(i)
aset.add(num//i)
print(sorted(aset))
print("약수의 개수는 %d개 입니다." %len(aset))
Enter a number : 2468013579
[1, 3, 9, 61, 183, 549, 4495471, 13486413, 40459239, 274223731, 822671193, 2468013579]
약수의 개수는 12개 입니다.
num = int(input(" Input your number: "))
dic = {x for x in range(1, num+1) if num % x == 0}
print(" Contents of factors: {}".format(sorted(dic)), '\n', "The number of factors: {}".format(len(dic)))
Input your number: 72
Contents of factors: [1, 2, 3, 4, 6, 8, 9, 12, 18, 24, 36, 72]
The number of factors: 12
public static void main(String[] args) {
System.out.println("숫자를 입력하세요.");
Scanner sc = new Scanner(System.in);
int num;
num = sc.nextInt();
int count=0;
System.out.print("{ ");
for(int i = 1; i <= num; i++) {
if(num%i==0) {
if(i>1) {
System.out.print(", ");
}
System.out.print(i);
count++;
}
}
System.out.println(" }");
System.out.println("약수의 개수는 " + count + "개 입니다.");
}
def measure(n):
mes = []
for x in range(1,int(n/2)+1):
if n%x == 0:
mes.append(x)
return list(sorted(mes)) + [n], len(mes)
C#
using System;
using System.Collections.Generic;
using System.Linq;
namespace CD209
{
class Program
{
static void Main()
{
long inputNumber = long.Parse(Console.ReadLine());
List<long> divisorsList = GetDivisors(inputNumber);
Console.WriteLine($"{{ {string.Join(", ", divisorsList)} }}");
Console.WriteLine($"약수의 개수는 {divisorsList.Count}개 입니다.");
Console.ReadKey();
}
static List<long> GetDivisors(long aNumber)
{
SortedSet<long> divisors = new SortedSet<long>();
for (long anum = 1; anum <= (long)Math.Sqrt(aNumber) + 1; anum++)
{
if (aNumber % anum == 0)
{
divisors.Add(anum);
divisors.Add(aNumber / anum);
}
}
return divisors.ToList();
}
}
}
24
{ 1, 2, 3, 4, 6, 8, 12, 24 }
약수의 개수는 8개 입니다.
36
{ 1, 2, 3, 4, 6, 9, 12, 18, 36 }
약수의 개수는 9개 입니다.
2468013579
{ 1, 3, 9, 61, 183, 549, 4495471, 13486413, 40459239, 274223731, 822671193, 2468013579 }
약수의 개수는 12개 입니다.
123456789
{ 1, 3, 9, 3607, 3803, 10821, 11409, 32463, 34227, 13717421, 41152263, 123456789 }
약수의 개수는 12개 입니다.
먼저 사용자가 임의의 양의 정수를 입력하는 상황을 만듭니다.
let num = 12345;
위키백과에 따르면 약수의 정의는 "어떤 정수를 나머지 없이 나눌 수 있는 정수"로 정의합니다. 따라서 사용자가 입력한 수가 정수임을 확인하기 위해 Number.isInteger()를 사용합니다.
let num = 12345;
if (Number.isInteger(num)) {
//code here.
} else {
console.log("이 값은 정수 데이터가 아니므로 약수를 구할 수 없습니다.");
}
그리고 약수를 저장할 배열 divisor(이하 "약수 배열")를 정의합니다.
let num = 12345;
if (Number.isInteger(num)) {
let divisor = new Array();
} else {
console.log("이 값은 정수 데이터가 아니므로 약수를 구할 수 없습니다.");
}
그 뒤 for 문을 사용하여 사용자가 입력한 정수를 사용자가 입력한 정수까지의 반복 횟수(이하 "i")로 나누어줍니다.
let num = 12345;
if (Number.isInteger(num)) {
let divisor = new Array();
for (let i = 0; i <= num; i++) {
//code here.
}
} else {
console.log("이 값은 정수 데이터가 아니므로 약수를 구할 수 없습니다.");
}
약수는 양의 약수와 음의 약수로 나뉘므로 Array.prototype.push()를 이용하여 i와 -i를 약수 배열에 저장합니다.
let num = 12345;
if (Number.isInteger(num)) {
let divisor = new Array();
for (let i = 0; i <= num; i++) {
if (num%i == 0) {
divisor.push(-i, i);
}
}
} else {
console.log("이 값은 정수 데이터가 아니므로 약수를 구할 수 없습니다.");
}
그 후 약수 배열을 Array.prototype.sort()를 이용하여 오름차순으로 정렬하기 위해 compare라는 비교 함수를 만들고, 해당 함수를 매개 변수로 전달하여 약수 배열을 정렬합니다.
let num = 12345;
if (Number.isInteger(num)) {
let divisor = new Array();
for (let i = 0; i <= num; i++) {
if (num%i == 0) {
divisor.push(-i, i);
}
}
function compare(a, b) {
return a - b;
}
divisor.sort(compare);
} else {
console.log("이 값은 정수 데이터가 아니므로 약수를 구할 수 없습니다.");
}
약수 배열의 원소 사이에 ", "문자를 추가하여 구분하기 위해 Array.prototype.join()을 이용하여 joinedDivisor에 저장합니다.
let num = 12345;
if (Number.isInteger(num)) {
let divisor = new Array();
for (let i = 0; i <= num; i++) {
if (num%i == 0) {
divisor.push(-i, i);
}
}
function compare(a, b) {
return a - b;
}
divisor.sort(compare);
let joinedDivisor = divisor.join(", ");
} else {
console.log("이 값은 정수 데이터가 아니므로 약수를 구할 수 없습니다.");
}
joinedDivisor를 출력하고 약수의 개수는 "\n"을 이용하여 개행하여 출력합니다.
let num = 12345;
if (Number.isInteger(num)) {
let divisor = new Array();
for (let i = 0; i <= num; i++) {
if (num%i == 0) {
divisor.push(-i, i);
}
}
function compare(a, b) {
return a - b;
}
divisor.sort(compare);
let joinedDivisor = divisor.join(", ");
console.log("{"+joinedDivisor+"}"+"\n"+"약수의 개수는 "+divisor.length+"개 입니다.");
} else {
console.log("이 값은 정수 데이터가 아니므로 약수를 구할 수 없습니다.");
}
class Super {
int index = 1;
public void printVal(){
System.out.println("super");
}
}
class Suv extends Super{
int index = 2;
public void printVal(){
System.out.println("sub");
}
}
public class Test2{
public static void main(String args[]){
Super sup1 = Sub();
System.out.println(sub1.index);
sub1.printVal();
}
}
list_yak= []
number = int(input('숫자를 입력 하세요. >>>> '))
for i in range(1, number+1):
if number % i == 0 :
list_yak.append(i)
print("{0} 의 약수는 {1} 입니다.".format(number,list_yak))
print(" {0} 의 약수의 개수는 {1}개 입니다.".format(number,len(list_yak)))
num = int(input('숫자 입력: '))
divisor = []
i = 1
while i <= num:
if num % i == 0:
divisor.append(i)
i += 1
print(divisor)
print("약수의 개수는 %d개 입니다." % len(divisor))
1번 숫자 입력: 2468013579 [1, 3, 9, 61, 183, 549, 4495471, 13486413, 40459239, 274223731, 822671193, 2468013579] 약수의 개수는 12개 입니다.
def return_divisor(num):
divisor_list = []
for i in range(1, num+1):
if num % i == 0:
divisor_list.append(i)
print(sorted(divisor_list), '\n약수의 개수는 %d개 입니다' % len(set(divisor_list)))
#include <stdio.h>
void main()
{
int Num, Divisor = 1,Count=1;
printf("약수를 찾을 수를 입력하시오\n");
scanf_s("%d", &Num);
printf("\n{1");
while (Divisor < Num)
{
Divisor++;
if (Num%Divisor==0)
{
printf(",%d", Divisor);
Count++;
}
else continue;
}
printf("}\n약수의 개수는 %d개입니다", Count);
}
2. 약수를 찾을 수를 입력하시오 123456789
{1,3,9,3607,3803,10821,11409,32463,34227,13717421,41152263,123456789} 약수의 개수는 12개입니다
public static ArrayList<Integer> test(int number) {
double req = (double)number;
double test;
ArrayList<Integer> result = new ArrayList<>();
for(int i = 1 ; i <=number; i++) {
test = req/(double)i;
if(isInt(test)) {
result.add((int)test);
}
}
Collections.reverse(result);
return result;
}
public static boolean isInt(double d) {
return d == (int)d;
}
private static void printOut(ArrayList<Integer> test) {
System.out.println(test + "\n약수의 개수는 " +test.size()+"개 입니다.");
}
public static void main(String[] args) {
printOut(test(24));
}
n = int(input())
def divisor_make(n):
divisor_list = []
for i in range(1, int(n+1)):
if n % i == 0:
divisor_list.append(i)
print(divisor_list)
print("약수의 개수는 %d개 입니다." %len(divisor_list))
divisor_make(n)
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
int main(void)
{
vector<int> iv;
vector<int>::iterator itr;
int num;
cout << "정수를 입력하세요>>";
cin >> num;
for (int i = 1; i <= num; i++)
{
if (num%i == 0)
{
iv.push_back(i);
}
}
sort(iv.begin(), iv.end());
cout << "{";
for (itr = iv.begin(); itr != iv.end(); itr++)
{
cout << *itr << " ";
}
cout << "}" << endl;
cout << "약수의 개수는 " << iv.size();
}
#include <stdio.h>
void main()
{
int num, count = 1, result = 0;
scanf("%d", &num);
printf("{ ");
for (; count<=num ; count++)
{
if (num == count)
{
printf("%d", count);
result++;
}
else if (num%count == 0)
{
printf("%d, ", count);
result++;
}
}
printf("}\n약수의 개수는 %d개 입니다.", result);
}
def FindDv(number):
list=[]
for i in range(1,number//2+1): #int(math.sqrt(number)) 로 최대값 설정하는게 양호
if number%i==0 and i not in list:
list.append(i)
list.append(number//i)
list.sort()
return "%s\n약수의 개수는 %s개 입니다."%(list,len(list))
print(FindDv(2469))
public static void main(String[] args) {
long a = 2468013579L;
Set<Long> digits = factorSet(a);
System.out.println(digits);
System.out.println("약수의 개수는 " + digits.size() + "개 입니다.");
}
private static Set<Long> factorSet(long a) {
Set<Long> digits = new TreeSet<>();
for (long i=1; i<= a; ++i) {
if (a % i == 0) {
digits.add(i);
}
}
return digits;
}
Julia 입니다.
function getdivs(n)
r = [1, n]
n % 2 == 0 && append!(r, [2, n ÷ 2])
l = Int(floor(√n))
for i=3:2:l
n % i == 0 && append!(r, [i, n ÷ i])
end
l * l == n && poplast!(r)
return r
end
@time let n = 123456789
r = getdivs(n)
println("{ ", join(sort(r), ", "), " }")
println("약수의 개수는 $(length(r))개입니다.")
end
num = int(input('수 입력 : '))
print('{ 1,', end=' ')
count = 0
while True:
for i in range(2, int(num/2+1)):
if (num % i) == 0:
count += 1
print(i, end=', ')
break
print(num, '}', '\n약수의 개수는 {}개 입니다.'.format(count+2))
from math import sqrt
def main():
num = int(input())
divisors = get_divisors(num)
print_divisors(divisors)
def get_divisors(num):
divisors = list()
for divisor in range(1, int(sqrt(num))):
if num % divisor == 0:
divisors.append(divisor)
for i in reversed(range(len(divisors))):
divisor = int(num / divisors[i])
divisors.append(divisor)
return divisors
def print_divisors(divisors):
divisors_list_string = '{ ' + ', '.join(str(x) for x in divisors) + ' }'
divisors_length = len(divisors)
divisors_length_notice_string = '약수의 개수는 ' + str(divisors_length) + '개 입니다.'
print(divisors_list_string)
print(divisors_length_notice_string)
if __name__ == "__main__":
main()
{ 1, 3, 9, 3607, 3803, 10821, 11409, 32463, 34227, 13717421, 41152263, 123456789 } 약수의 개수는 12개 입니다.
public class submultiple { public static void main(String[] args) { int num = 0; int rs = 0; int count = 0;
System.out.print("약수를 입력하세요. -> ");
Scanner sc = new Scanner(System.in);
num = sc.nextInt();
System.out.print("{ ");
for (int i= 1; i<=num; i++) {
if(i > 0) {
rs = num % i;
if( rs == 0 && i != num) {
System.out.print(i + ", "); count += 1;
}
}
}
System.out.print(num + " ");
System.out.println("}");
System.out.println("약수 총개수 : " + (count+1));
sc.close();
}
}
약수를 입력하세요. -> 123456789 { 1, 3, 9, 3607, 3803, 10821, 11409, 32463, 34227, 13717421, 41152263, 123456789 } 약수 총개수 : 12
let input = prompt('NUMBER')
let temp = []
for(let i = 1; i <= (Math.ceil(input / 2)); ++i) {
if(input % i == 0) temp.push(i)
}
let answer = '{ '
for(let i = 0; i < (temp.length - 1); ++i) {
answer += temp[i] + ', '
}
answer += temp[temp.length - 1] + ' }'
console.log(answer)
console.log(`약수의 개수는 ${temp.length}개 입니다.`)
static void Main(string[] args)
{
Console.WriteLine("*** 코딩도장 Q209 ***");
Console.Write("약수를 찾을 수를 입력하세요 : ");
string userInput = Console.ReadLine();
int tmp = int.Parse(userInput);
List<int> yaksu = new List<int>();
for (int i = 1; i <= tmp; i++)
{
if (tmp % i == 0)
{
yaksu.Add(i);
}
}
Console.WriteLine("입력한 수 : {0}", userInput);
Console.Write("{");
foreach (int x in yaksu)
{
Console.Write(x + " ");
}
Console.WriteLine("}");
Console.WriteLine("약수의 개수 : {0}", yaksu.Count());
}
while True:
n=int(input("Input a positive integer: "))
factor=[]
for i in range(1,int(n**0.5)+1):
if n%i==0:
factor.append(i)
if n/i!=i:
factor.append(int(n/i))
factor.sort()
print(factor)
print("%d has %d factors."%(n,len(factor)))
import math
def divisor(num):
result=[]
sqrt_num=int(math.sqrt(num))
for i in range(1,sqrt_num):
if num%i==0:
result.extend([i,num//i])
if sqrt_num*sqrt_num==num:
result.append(sqrt_num)
result.sort()
print(result)
print(f'약수의 개수는{len(result)}개 입니다.')
import math as m
num = int(input())
result = []
count = 0
for i in range(1, int(m.sqrt(num))):
if num % i == 0:
result.append(i)
result.append(num // i)
count += 1
print(sorted(result))
print('약수의 개수는 {}개입니다.'.format(count))
비쥬얼 스튜디오로 작성하였습니다. 약수들을 저장하기 위해서 배열을 사용하였고 for문을 통해 처리하였습니다.
#include <stdio.h>
void main() {
int n, count=0;
printf("약수를 얻기 위한 수를 입력하세요 : ");
scanf("%d", &n);
int *data = new int[n];
printf("약수 : ");
for (int i = 1; i <= n; i++)
{
if (n % i == 0)
{
data[i - 1] = i;
++count;
printf(" %d ", i);
}
}
printf("\n약수의 개수는 %d개입니다.", count);
}
c로 했슴다 { a, b, c, d } 이런식으로 깔쌈하게 양식 지켜서했어요
#include <stdio.h>
int main(){
int num,cnt;
scanf("%d", &num);
printf("{ ");
for(int i=1; i<=num;i++){
if(num==i){
cnt++;
printf("%d ",i);
}
else if(num%i==0){
cnt++;
printf("%d, ", i);
}
}
printf("} \n약수의 개수는 %d개 입니다.",cnt);
}
int main() { int a,i,s=1,x[1000]; scanf("%d",&a); for(i=1;i<=a;i++) { if(a%i==0) { x[s]=i; s++; } } printf("{ "); for(i=1;i<s;i++) { printf("%d, ",x[i]); } printf("}\n약수의 개수는 %d개 입니다.",s-1); }
julia
function divisor(n::BigInt)
ans = [i for i = 1:BigInt(floor(n^0.5)) if n%i == 0]
ans[end]^2 == n ?
vcat(ans, Vector{BigInt}(n ./ ans[end:-1:2])) :
vcat(ans, Vector{BigInt}(n ./ reverse(ans)))
end
let # main
while true
inp = readline()
( isempty(inp) || !all(isdigit.(collect(inp))) ) && break
ans = divisor(parse(BigInt, inp))
println(ans, "\n약수의 개수는 $(length(ans))개 입니다\n")
end
end # main end
public static void main(String[] args) { // TODO Auto-generated method stub
//String inputNum = "2468013579"; //입력값
String inputNum = "24"; //입력값
System.out.println("입력1:"+inputNum);
System.out.println("출력1:");
System.out.println(DivisorCalu.doDivisor(inputNum));
System.out.println("약수의 개수는 "+DivisorCalu.doDivisor(inputNum).size()+"개 입니다.");
}
public static List<Long> doDivisor(String str) {
List<Long> listNum = new ArrayList<Long>();
long num = Long.parseLong(str);
for(long i=1; i <= (num/2); i++) { //속도가 느리다.
if( num % i == 0) {
listNum.add(i);
}
}
listNum.add(num); //자기자신의 수
return listNum;
}```{.java}
숫자가 많으면 속도가 느립니다. ```
def main():
input_file = open("divisor.inp", "r")
output_file = open("divisor.out", "w")
lines = input_file.readlines()
print (lines)
num = int(lines[0])
print (num)
for j in range(1,num+1):
a = int(lines[j])
for i in range(1, a):
if (a % i == 0):
output_file.write(str(i)+" ")
output_file.write(str(a)+"$"+"\n")
input_file.close()
output_file.close()
if __name__=="__main__":
main()
import math
def cds(n):
cds = set()
for i in range(1, int(math.sqrt(n))+1):
if n % i == 0:
cds.add(i)
cds.add(n//i)
cds = list(cds)
return cds, len(cds)
풀이 써주신 분 감사합니다! 배우고 갑니다.
}
def yaksu():
n=int(input(">>>"))
k=[]
for i in range(1,n+1):
if n%i==0:
k+=[i]
a="{ "
for s in range(len(k)):
if s==len(k)-1:
a += "%d }"%k[s]
else:
a+="%d, "%k[s]
print(a)
print("약수의 개수는 %d입니다"%len(k))
yaksu()
세상 바빠서 제대로 확인을 못했네요
강동길님의 풀이와 설명를 참고해서 정답을 맞추시면 되겠습니다!!
죄송해요 그럼
#include <stdio.h>
int main()
{
int number = 2;
for (int i = 0; i < 4; i++)
{
number = number * (10);
}
printf("%d!!", number);
return 0;
}
inp, li = int(input("input : ")), []
for k in range(1, inp+1) :
if inp%k == 0 :
li.append(k)
print(li, "\n",len(li))
결과
input : 558 [1, 2, 3, 6, 9, 18, 31, 62, 93, 186, 279, 558] 12
public class 약수를찾아라 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
long n = scan.nextLong();
ArrayList<Long> list = new ArrayList<Long>();
int count = 0;
for(long i=1; i<n; i++) {
if(n/i<i) {
break;
}
if(n%i==0) {
if(n/i==i) {
list.add(i);
count++;
}
else {
list.add(i);
list.add(n/i);
count+=2;
}
}
}
Collections.sort(list);
System.out.println(list);
System.out.println("약수의 개수는 " + count + "개 입니다.");
}
}
ex)1 24 -> [1, 2, 3, 4, 6, 8, 12, 24]
약수의 개수는 8개 입니다.
ex2) 36 -> [1, 2, 3, 4, 6, 9, 12, 18, 36] //6도 반복되지 않게 처리해주었습니다.
약수의 개수는 9개 입니다.
ex3) 2468013579 -> [1, 3, 9, 61, 183, 549, 4495471, 13486413, 40459239, 274223731, 822671193, 2468013579]
약수의 개수는 12개 입니다.
ex4) 123456789 -> [1, 3, 9, 3607, 3803, 10821, 11409, 32463, 34227, 13717421, 41152263, 123456789]
약수의 개수는 12개 입니다.
예를 들어 24의 경우 1, 24, 2, 12, 3, 8, 4, 6 이런식으로 i와 입력값을 i로 나눈 수를 list에 추가하여 i가 1부터 n까지 모두 하지않아도 되도록 하였습니다. 그렇게 list에 추가된 값을 Collections.sort로 내림차순으로 정리후 출력하였습니다.
n=int(input("양의 정수 n을 입력하십시오: "))
s=set()
for num in range(1,int(n**(1/2))+1):
if n%num==0:
s.add(num)
s.add(n//num)
else:
continue
print(s)
print("약수의 개수는 "+str(len(s))+"개 입니다.")
#처음엔 그냥 했었는데 몫의 값을 넣으니 확실히 계산 시간이 줄어들고 다른 사람들의 답을 참조하여 range를 n의 제곱근+1까지로 바꾸니 훨씬 더 빠르네요
inp=int(input())
a=[]
for i in range(1,inp+1):
if inp%i==0:
a.append(i)
print(a)
print('약수의 개수는',len(a),'개 입니다.')
def div(num):
di = []
for n in range(1, int(num**.5)+1):
if num % n == 0:
di.append(n)
if num//n != n:
di.append(num//n)
d = [str(i) for i in sorted(di)]
print('{{{}}}\n약수의 개수는 {}개입니다.'.format(', '.join(d), len(d)))
if __name__ == '__main__':
inp = int(input('입력수: '))
div(inp)
import time
import math
start = time.time()
num = int(input())
num_yaksu = []
for i in range(1,int(math.sqrt(num))):
if num%i == 0:
num_yaksu.append(i)
num_yaksu.append(num//i)
i += 1
else:
i += 1
print(num_yaksu)
print('약수 갯수는',len(num_yaksu),'개입니다')
print(time.time()-start)
시간도 측정해보려고 time라이브러리를 사용해보았습니다 처음엔 1분걸렸는데 2초까지 줄였네요!!
n = int(input())
result = [i for i in range(1, n + 1) if n % i == 0]
print(set(result))
print("약수의 개수는 {}개 입니다.".format(len(result)))
N = int(input())
main = []
for i in range(1,N+1):
if N % i == 0:
main.append(i)
main.append(int(N/i))
if N/i - i <= i:
break
main.sort()
print(main)
n = int(input())
import math
s1 = {i for i in range(1, round(math.sqrt(n))+1) if n % i == 0}
s2 = {n // i for i in s1}
s = list(s1|s2)
s.sort(reverse=False)
print(s, '\n약수의 개수는 {}개 입니다'.format(len(s)))
a = 123456789
b=[]
c=[]
for i in range(1,int(a**(1/2))+1):
if a%i==0:
b.append(i)
if i != a//i:
c.append(a//i)
print(b+c[::-1])
print("약수의 개수는 {}개 입니다".format(len(b)+len(c)))
#codingdojing_find_divisor
def find_divisor(num: int):
div = set()
for i in range(1, int(num**0.5)+1):
if num%i == 0: div.update({i, num//i})
div = sorted(div)
print(f'{div}')
print(f'약수의 개수는 {len(div)}개 입니다.')
find_divisor(24)
find_divisor(36)
find_divisor(2468013579)
num = int(input('숫자 입력: '))
divisor = [1]
i = 2
while i <= num:
if num % i == 0: # 약수 구하는 과정
divisor.append(i)
i += 1
print(divisor)
print("약수의 개수는 %d개 입니다." % len(divisor))
import math
n = int(input("약수를 분석할 숫자를 입력하시오:"))
arr = []
for i in range(1,int(math.sqrt(n))+1):
if n%i == 0 :
arr.append(i)
arr.append(n//i)
print(sorted(list(set(arr))),'\n',"약수의 개수는 %d개 입니다." % len(set(arr)))
package org.javaturotials.ex;
import java.util.*;
import java.util.stream.Collectors;
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num =sc.nextInt();
ArrayList<Integer> arr = new ArrayList<Integer>();
int count=0;
for(int i=1; i<=num; i++) {
if(num%i==0) {
arr.add(i);
count++;
}
}
for(int i=0; i<arr.size(); i++) {
System.out.print(arr.get(i) + " ");
}
System.out.println("\n약수의 개수는 " + count + "개 입니다.");
}
}
n=2468013579
import math
def divisors(n):
divs = [1]
for i in range(2,int(math.sqrt(n))+1):
if n%i == 0:
divs.extend([i,n/i])
divs.extend([n])
divs.sort()
return list((divs))
print(divisors(n))
print(len(divisors(n)))
num = input('약수를 찾는 함수 입니다. 자연수를 입력하세요 : ')
result = [i for i in range(1, int(num) + 1) if int(num) % i == 0]
for i in result:
print(i, end=', ')
print(f'\n약수의 개수는 {len(result)}입니다.')
using System;
using System.Collections.Generic;
namespace solution
{
class Program
{
static void Main(string[] args)
{
Console.Write("약수를 얻을 자연수 입력: ");
double num = Convert.ToDouble(Console.ReadLine());
var ans = divisors(num);
Console.WriteLine("\n약수: [{0}]", string.Join(",", ans));
Console.WriteLine("약수의 개수는 {0}개 입니다.", ans.Count);
}
private static List<double> divisors(double num)
{
List<double> list = new List<double>();
for (int i = 1; i <= (int)Math.Sqrt(num); i++)
{
if(num % i == 0)
{
list.Add(i);
if(!list.Contains(num/i))
list.Add(num / i);
}
}
list.Sort();
return list;
}
}
}