 Find all functions $ f:\mathbb{N} \rightarrow \mathbb{ N }_0 $ satisfy the following conditions:

i) $ f(ab)=f(a)+f(b)-f(\gcd(a,b)),  \forall a,b \in \mathbb{N} $   

ii) For all primes $ p $ and natural numbers $ a $, $ f(a)\ge f(ap) \Rightarrow f(a)+f(p) \ge f(a)f(p)+1 $

1. **Using Induction on Condition (i):**

   We start by considering the function \( f \) for prime powers. Let \( p \) be a prime number and \( k \) be a positive integer. We will use induction to show that \( f(p^k) = f(p) \) for all \( k \).

   - **Base Case:** For \( k = 1 \), we have \( f(p^1) = f(p) \), which is trivially true.
   - **Inductive Step:** Assume \( f(p^k) = f(p) \) for some \( k \). We need to show that \( f(p^{k+1}) = f(p) \).

     Using condition (i) with \( a = p^k \) and \( b = p \), we get:
     \[
     f(p^{k+1}) = f(p^k \cdot p) = f(p^k) + f(p) - f(\gcd(p^k, p))
     \]
     Since \( \gcd(p^k, p) = p \), we have:
     \[
     f(p^{k+1}) = f(p^k) + f(p) - f(p)
     \]
     By the inductive hypothesis, \( f(p^k) = f(p) \), so:
     \[
     f(p^{k+1}) = f(p)
     \]
     Thus, by induction, \( f(p^k) = f(p) \) for all \( k \).

2. **Using Condition (ii) with \( a = p \):**

   Let \( p \) be a prime number. Using condition (ii) with \( a = p \), we get:
   \[
   f(p) \ge f(p^2) \Rightarrow f(p) + f(p) \ge f(p)f(p) + 1
   \]
   Since we have already shown that \( f(p^2) = f(p) \), the condition simplifies to:
   \[
   2f(p) \ge f(p)^2 + 1
   \]
   Let \( x = f(p) \). The inequality becomes:
   \[
   2x \ge x^2 + 1
   \]
   Rearranging, we get:
   \[
   x^2 - 2x + 1 \le 0 \Rightarrow (x-1)^2 \le 0
   \]
   Since \( (x-1)^2 \ge 0 \) for all \( x \), the only solution is \( x = 1 \). Therefore, \( f(p) = 1 \) for all primes \( p \).

3. **Generalizing for Composite Numbers:**

   Using condition (i) again, we consider a composite number \( n \) which can be written as a product of distinct primes \( p_1, p_2, \ldots, p_n \):
   \[
   f(n) = f(p_1 p_2 \cdots p_n) = f(p_1) + f(p_2) + \cdots + f(p_n) - f(\gcd(p_1, p_2, \ldots, p_n))
   \]
   Since \( \gcd(p_1, p_2, \ldots, p_n) = 1 \) and \( f(p_i) = 1 \) for all primes \( p_i \), we get:
   \[
   f(n) = 1 + 1 + \cdots + 1 - f(1) = n - f(1)
   \]

4. **Determining \( f(1) \):**

   We need \( f(1) \) to be such that \( f(n) \ge 0 \) for all \( n \). This implies:
   \[
   n - f(1) \ge 0 \Rightarrow f(1) \le n
   \]
   Since \( f(1) \) must be a constant, the only possible values are \( f(1) = 0 \) or \( f(1) = 1 \).

   - If \( f(1) = 0 \), then:
     \[
     f(n) = n
     \]
   - If \( f(1) = 1 \), then:
     \[
     f(n) = 1
     \]

Thus, the two possible solutions are:
\[
\boxed{f(n) = n \text{ or } f(n) = 1}
\]