equal
deleted
inserted
replaced
540 fixes p :: nat |
540 fixes p :: nat |
541 assumes p: "prime p" |
541 assumes p: "prime p" |
542 shows "d dvd p ^ k \<longleftrightarrow> (\<exists>i\<le>k. d = p ^ i)" |
542 shows "d dvd p ^ k \<longleftrightarrow> (\<exists>i\<le>k. d = p ^ i)" |
543 using assms divides_primepow [of p d k] by (auto intro: le_imp_power_dvd) |
543 using assms divides_primepow [of p d k] by (auto intro: le_imp_power_dvd) |
544 |
544 |
|
545 lemma gcd_prime_int: |
|
546 assumes "prime (p :: int)" |
|
547 shows "gcd p k = (if p dvd k then p else 1)" |
|
548 proof - |
|
549 have "p \<ge> 0" |
|
550 using assms prime_ge_0_int by auto |
|
551 show ?thesis |
|
552 proof (cases "p dvd k") |
|
553 case True |
|
554 thus ?thesis using assms \<open>p \<ge> 0\<close> by auto |
|
555 next |
|
556 case False |
|
557 hence "coprime p k" |
|
558 using assms by (simp add: prime_imp_coprime) |
|
559 with False show ?thesis |
|
560 by auto |
|
561 qed |
|
562 qed |
|
563 |
545 |
564 |
546 subsection \<open>Chinese Remainder Theorem Variants\<close> |
565 subsection \<open>Chinese Remainder Theorem Variants\<close> |
547 |
566 |
548 lemma bezout_gcd_nat: |
567 lemma bezout_gcd_nat: |
549 fixes a::nat shows "\<exists>x y. a * x - b * y = gcd a b \<or> b * x - a * y = gcd a b" |
568 fixes a::nat shows "\<exists>x y. a * x - b * y = gcd a b \<or> b * x - a * y = gcd a b" |