밍동니
2021. 3. 4. 00:46
ex00
#include <io.h>
#include <stdio.h>
int ft_iterative_factorial(int nb)
{
if (nb < 0)
return (0);
if (nb==1)
return (1);
return nb * ft_iterative_factorial(nb-1);
}
int main(void){
printf("%d", ft_iterative_factorial(-3));
return 0;
}
재귀를 사용한 팩토리얼 구현 -> 문제 잘읽자 반복함수 작성하래서 아래로 바꿈
다음 문제에 재귀로 하라고 나옴.
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_iterative_factorial.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: minjeoki <minjeoki@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/03/03 19:40:45 by minjeoki #+# #+# */
/* Updated: 2021/03/03 19:40:45 by minjeoki ### ########.fr */
/* */
/* ************************************************************************** */
#include <io.h>
#include <stdio.h>
int ft_iterative_factorial(int nb)
{
int answer;
answer=1;
if (nb < 0)
return (0);
if (nb == 0)
return (1);
if (nb==1)
return (1);
while(nb){
answer *= nb;
nb--;
}
return answer;
}
int main(void){
printf("%d", ft_iterative_factorial(5));
return 0;
}
ex01
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_recursive_factorial.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: minjeoki <minjeoki@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/03/03 19:52:15 by minjeoki #+# #+# */
/* Updated: 2021/03/03 19:52:15 by minjeoki ### ########.fr */
/* */
/* ************************************************************************** */
#include <io.h>
#include <stdio.h>
int ft_recursive_factorial(int nb)
{
if (nb < 0 )
return (0);
if (nb == 0)
return (1);
if (nb == 1)
return (1);
return nb * ft_recursive_factorial(nb-1);
}
int main(void){
printf("%d", ft_recursive_factorial(5));
return 0;
}
ex02
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_iterative_power.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: minjeoki <minjeoki@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/03/03 20:25:30 by minjeoki #+# #+# */
/* Updated: 2021/03/03 20:25:30 by minjeoki ### ########.fr */
/* */
/* ************************************************************************** */
#include <io.h>
#include <stdio.h>
int ft_iterative_power(int nb, int power)
{
int answer;
answer = 1;
if (power ==0)
return (1);
if (power < 0)
return (0);
while(power)
{
answer *= nb;
power--;
}
return answer;
}
int main(void)
{
printf("%d",ft_iterative_power(2, 0));
return 0;
}
ex03
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_recursive_power.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: minjeoki <minjeoki@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/03/03 20:40:13 by minjeoki #+# #+# */
/* Updated: 2021/03/03 20:40:13 by minjeoki ### ########.fr */
/* */
/* ************************************************************************** */
#include <io.h>
#include <stdio.h>
int ft_recursive_power(int nb, int power)
{
int answer;
answer = 1;
if (power ==0)
return (1);
if (power < 0)
return (0);
return nb * ft_recursive_power(nb, power-1);
}
int main(void)
{
printf("%d", ft_recursive_power(2, 4));
return 0;
}
ex04
#include <io.h>
#include <stdio.h>
int ft_fibonacci(int index)
{
if (index < 0)
return (-1);
else if (index == 0)
return (0);
else if (index < 2)
return (1);
else
return (ft_fibonacci(index - 2) + ft_fibonacci(index - 1));
}
int main()
{
printf("%d",ft_fibonacci(2));
ex05
#include <unistd.h>
#include <stdio.h>
int ft_sqrt(int nb)
{
long long i;
long long num;
if (nb <= 0)
return (0);
i = 1;
num = (long long)nb;
while (i * i <= num)
{
if (i * i == num)
return (i);
i++;
}
return (0);
}
int main(void)
{
printf("%d", ft_sqrt(1));
return 0;
}
#include <io.h>
#include <stdio.h>
int ft_sqrt(int nb)
{
long long i;
if (nb <= 0)
return (0);
i = 1;
while (i)
{
if (i * i == nb)
return (i);
i++;
}
return (0);
}
int main(void)
{
printf("%d", ft_sqrt(1073741824));
return (0);
}
-2^31 ~ 1^31-1
그러므로 2^30인 수를 넣었을땐 sqrt 제대로 출력 나와야 한다.
ex06
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_is_prime.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: minjeoki <minjeoki@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/03/03 23:50:58 by minjeoki #+# #+# */
/* Updated: 2021/03/03 23:50:58 by minjeoki ### ########.fr */
/* */
/* ************************************************************************** */
#include <io.h>
#include <stdio.h>
int ft_is_prime(int nb)
{
int i;
int count;
count = 0;
i = 1;
if (nb<=1)
return 0;
while (i<=nb)
{
if (nb%i==0)
count++;
i++;
}
if (count==2)
return (1);
else
return (0);
}
int main(){
printf("%d", ft_is_prime(7));
return 0;
}
1과 자기 자신만으로 나누어 떨어지는 1보다 큰 양의 정수. → 1 은 소수가 아니다. → 음수는 소수가 아니다.
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_find_next_prime.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: minjeoki <minjeoki@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/03/03 23:59:48 by minjeoki #+# #+# */
/* Updated: 2021/03/03 23:59:48 by minjeoki ### ########.fr */
/* */
/* ************************************************************************** */
#include <io.h>
#include <Stdio.h>
int ft_find_next_prime(int nb)
{
int j;
int i;
int count;
j = 1;
i = 1;
while(i<=nb)
{
if (nb % i ==0)
count++;
i++;
}
if (count == 2)
return nb;
else
{
ft_find_next_prime(nb+1);
}
}
int main()
{
printf("%d", ft_find_next_prime(9));
return 0;
}
#include <io.h>
#include <stdio.h>
int ft_is_prime(int nb)
{
int i;
i = 2;
while (nb % i != 0)
{
i++;
}
if (nb==i)
return (1);
return (0);
}
int main()
{
printf("%d", ft_is_prime(300));
return 0;
}
틀렷대서 다시짯어요
ex07
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_find_next_prime.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: minjeoki <minjeoki@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/03/03 23:59:48 by minjeoki #+# #+# */
/* Updated: 2021/03/03 23:59:48 by minjeoki ### ########.fr */
/* */
/* ************************************************************************** */
#include <io.h>
#include <Stdio.h>
int ft_is_prime(int nb)
{
int i;
int count;
count = 0;
i = 1;
if (nb<=1)
return 0;
while (i<=nb)
{
if (nb%i==0)
count++;
i++;
}
if (count==2)
return (1);
else
return (0);
}
int ft_find_next_prime(int nb)
{
int next;
next=nb;
if (ft_is_prime(nb) == 1)
return nb;
while (ft_is_prime(next)==0)
next++;
return next;
}
int main()
{
printf("%d", ft_find_next_prime(9));
return 0;
}
ㅅ소수인지 판별하는 함수
그리고 그 소수로 다음걸 찾는 함수이다
소수이면 그 소수 바로 리턴
소수 아니면 다음 소수 리턴
while은 참일때만 돈다. 그래서 소수 아닌거는 계속 돈다 (0) 근데 소수 아니게되면 멈추고 리턴
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_find_next_prime.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: minjeoki <minjeoki@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/03/06 14:50:07 by minjeoki #+# #+# */
/* Updated: 2021/03/08 23:17:04 by minjeoki ### ########.fr */
/* */
/* ************************************************************************** */
#include <io.h>
#include <stdio.h>
int ft_is_prime(int nb)
{
int i;
i = 2;
while (nb % i != 0)
{
i++;
}
if (nb==i)
return (1);
return (0);
}
int ft_find_next_prime(int nb)
{
int next;
next = nb;
if (ft_is_prime(nb) == 1)
return (nb);
while (ft_is_prime(next) == 0)
next++;
return (next);
}
int main()
{
printf("%d", ft_find_next_prime(300));
return 0;
}
ㅅ
ex08
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_ten_queens_puzzle.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: minjeoki <minjeoki@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/03/04 00:35:51 by minjeoki #+# #+# */
/* Updated: 2021/03/04 00:35:51 by minjeoki ### ########.fr */
/* */
/* ************************************************************************** */
#include <io.h>
#include <stdio.h>
void ft_putchar(char c)
{
write(1, &c, 1);
}
int ft_ten_queens_puzzle_test(int table[10], int x, int y)
{
int i;
i = -1;
while (++i < x)
if (y == table[i] ||
i + table[i] == x + y ||
i - table[i] == x - y)
return (0);
return (1);
}
void ft_ten_queens_puzzle_recur(int table[10], int *res, int pos)
{
int i;
int i2;
if (pos == 10)
{
*res += 1;
i2 = -1;
while (++i2 < 10)
ft_putchar(table[i2] + '0');
ft_putchar('\n');
}
else
{
i = -1;
while (++i < 10)
if (ft_ten_queens_puzzle_test(table, pos, i))
{
table[pos] = i;
ft_ten_queens_puzzle_recur(table, res, pos + 1);
}
}
}
int ft_ten_queens_puzzle(void)
{
int table[10];
int i;
int res;
i = -1;
while (++i < 10)
table[i] = -1;
res = 0;
ft_ten_queens_puzzle_recur(table, &res, 0);
return (res);
}
int main()
{
printf("%d",ft_ten_queens_puzzle());
return 0;
}
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_ten_queens_puzzle.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: minjeoki <minjeoki@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/03/04 00:35:51 by minjeoki #+# #+# */
/* Updated: 2021/03/04 00:35:51 by minjeoki ### ########.fr */
/* */
/* ************************************************************************** */
#include <io.h>
#include <stdio.h>
int res=0;
void ft_putchar(char c)
{
write(1, &c, 1);
}
int ft_ten_queens_puzzle_test(int table[10], int x, int y)
{
int i;
i = -1;
while (++i < x)
if (y == table[i] ||
i + table[i] == x + y ||
i - table[i] == x - y)
return (0);
return (1);
}
void ft_ten_queens_puzzle_recur(int table[10], int pos)
{
int i;
int i2;
if (pos == 10)
{
res += 1;
i2 = -1;
while (++i2 < 10)
ft_putchar(table[i2] + '0');
ft_putchar('\n');
}
else
{
i = -1;
while (++i < 10)
if (ft_ten_queens_puzzle_test(table, pos, i))
{
table[pos] = i;
ft_ten_queens_puzzle_recur(table, pos + 1);
}
}
}
int ft_ten_queens_puzzle(void)
{
int table[10];
int i;
i = -1;
while (++i < 10)
table[i] = -1;
ft_ten_queens_puzzle_recur(table, 0);
return (res);
}
int main()
{
printf("%d", ft_ten_queens_puzzle());
return 0;
}
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_ten_queens_puzzle.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: minjeoki <minjeoki@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/03/04 00:35:51 by minjeoki #+# #+# */
/* Updated: 2021/03/04 00:35:51 by minjeoki ### ########.fr */
/* */
/* ************************************************************************** */
#include <io.h>
#include <stdio.h>
int res=0;
void ft_putchar(char c)
{
write(1, &c, 1);
}
int ft_ten_queens_puzzle_test(int table[10], int x)
{
int i;
i = -1;
while (++i < x)
if (table[x] == table[i] ||(table[x] - table[i]) == x-i || -(table[x] - table[i]) == x-i)
return (0);
return (1);
}
void ft_ten_queens_puzzle_recur(int table[10], int pos)
{
int i;
int i2;
if (pos == 10)
{
res += 1;
i2 = -1;
while (++i2 < 10)
ft_putchar(table[i2] + '0');
ft_putchar('\n');
}
else
{
i = -1;
while (++i < 10)
{
table[pos] = i;
if (ft_ten_queens_puzzle_test(table, pos))
ft_ten_queens_puzzle_recur(table, pos + 1);
}
}
}
int ft_ten_queens_puzzle(void)
{
int table[10];
int i;
i = -1;
while (++i < 10)
table[i] = -1;
ft_ten_queens_puzzle_recur(table, 0);
return (res);
}
int main()
{
printf("%d", ft_ten_queens_puzzle());
return 0;
}
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_ten_queens_puzzle.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: minjeoki <minjeoki@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/03/04 00:35:51 by minjeoki #+# #+# */
/* Updated: 2021/03/04 00:35:51 by minjeoki ### ########.fr */
/* */
/* ************************************************************************** */
#include <io.h>
#include <stdio.h>
int res;
void ft_putchar(char c)
{
write(1, &c, 1);
}
int check(int table[10], int x)
{
int i;
i = -1;
while (++i < x)
if (table[x] == table[i] ||(table[x] - table[i]) == x-i || -(table[x] - table[i]) == x-i)
return (0);
return (1);
}
void ft_ten_queens_find(int table[10], int pos)
{
int i;
int i2;
if (pos == 10)
{
res++;
i2 = -1;
while (++i2 < 10)
ft_putchar(table[i2] + '0');
ft_putchar('\n');
}
else
{
i = -1;
while (++i < 10)
{
table[pos] = i;
if (check(table, pos))
ft_ten_queens_find(table, pos + 1);
}
}
}
int ft_ten_queens_puzzle(void)
{
int table[10];
int i;
i = -1;
while (++i < 10)
table[i] = -1;
ft_ten_queens_find(table, 0);
return (res);
}
int main()
{
printf("%d", ft_ten_queens_puzzle());
return 0;
}
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_ten_queens_puzzle.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: minjeoki <minjeoki@student.42seoul.kr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/03/04 00:35:51 by minjeoki #+# #+# */
/* Updated: 2021/03/04 00:35:51 by minjeoki ### ########.fr */
/* */
/* ************************************************************************** */
#include <io.h>
#include <stdio.h>
int count;
void ft_putchar(char c)
{
write(1, &c, 1);
}
int check(int col[10], int x)
{
int i;
i = -1;
while (++i<x)
{
if (col[x]==col[i] || (col[x]-col[i])==x-i || -(col[x]-col[i])==x-i)
return 0;
}
return 1;
}
void ft_ten_queens_find(int col[10], int x)
{
int i;
int j;
i = -1;
if (x==10)
{
count++;
while (++i<10)
ft_putchar(col[i]+'0');
ft_putchar('\n');
}
else
{
j = -1;
while (++j<10)
{
col[x]=j;
if (check(col, x))
ft_ten_queens_find(col, x+1);
}
}
}
int ft_ten_queens_puzzle(void)
{
int col[10];
int i;
i = -1;
while (++i<10)
col[i]=-1;
ft_ten_queens_find(col, 0);
return count;
}
int main()
{
printf("%d", ft_ten_queens_puzzle());
return 0;
}
d완성ㅇ