互质和质数没有联系吧,互质就是最大公约数为1,比如4 9 互质
#include <iostream>
#include <stdioh>
#include <stdlibh>
using namespace std;
int gcd(int a,int b)
{
if(b==0)return a;
else return gcd(b,a%b);
}
int main()
{
int i,j,s;
double p;
s=0;
for(i=1; i<=100; i++)
{
for(j=i+1; j<=100; j++)
{
if(gcd(j,i)==1)s++;
}
}
printf("%d\n",s);
p=double(s)/(10099/2);
printf("%lf\n",p);
return 0;
}
希望采纳么么哒~(≧▽≦)/~
Option Explicit
Private Sub Form_Load()
Dim arr(9) As Integer
Dim i As Integer, j As Integer
Dim strOut As String
'随机生成10个数字
Randomize
For i = 0 To UBound(arr)
arr(i) = Int(Rnd 89) + 10
strOut = strOut & arr(i) & " "
Next
DebugPrint "十个数字为:" & strOut
For i = 0 To UBound(arr)
For j = i + 1 To UBound(arr)
If getMaxCD(arr(i), arr(j)) = 1 Then
'如果两数字最大公约数为1,则为互质数
DebugPrint arr(i) & "和" & arr(j) & "为互质数"
End If
Next
Next
End Sub
'返回两数的最大公约数
Private Function getMaxCD(ByVal num1 As Long, ByVal num2 As Long) As Long
Dim temp, a, b
If num1 < num2 Then
temp = num1
num1 = num2
num2 = temp
End If
a = num1
b = num2
While b <> 0
temp = a Mod b
a = b
b = temp
Wend
getMaxCD = a
End Function
(1)两个数都是合数(两数相差较大),小数所有的质因数,都不是大数的约数,这两个数是互质数。(2)两个数都是合数(两数相差较小),这两个数的差的所有质因数都不是小数的约数,这两个数是互质数。(3)两个数都是合数,大数除以小数的余数(不为“0”且大于“
1”)的所有质因数,都不是小数的约数,这两个数是互质数。如
462与
221462÷221=2……20,20=2×2×5。2、5都不是221的约数,这两个数是互质数。(4)减除法。如255与182。255-182=73,观察知
73<182。182-(73×2)=36,显然
36<73。73-(36×2)=1,(255,182)=1。所以这两个数是互质数。
/
21 17
是
2 4
不是
9 3
不是
13 39
不是
q
Press any key to continue
/
#include <stdioh>int MaxFactor(int m,int n) { // 最大公约数
int t;
if(n < m) { t = n;n = m;m = t; }
for(t = m;t > 0;t--) {
if(m % t == 0 && n % t == 0)
return t;
}
return 1; // 永远得不到执行。
}
void is_huzhishu(int x,int y,int res) {
if(1 == MaxFactor(x,y)) res = 1;
else res = 0;
}
int main() {
int m,n,res;
while(scanf("%d%d",&m,&n) == 2) {
is_huzhishu(m,n,&res);
if(res) printf("是\n");
else printf("不是\n");
}
return 0;
}
首先,根据条件,正整数加法乘法后还是正整数,n是一个正整数。
不妨设a>b(因为a、b互质,不会相等)
n=ax+by
n=a(x+(b/a)y)
n/a=x+(b/a)y
因为a、b互质,所以b/a是真分数;
而n>a且n>b,所以n/a必定是假分数,
令其整数部分为p,分数部分就是(n/a)-p=(n-ap)/a;(其中p为整数)
于是比较两边有:
p+(n-ap)/a=x+(b/a)y
两边变形得:
p-m+(n-ap+am)/a=x+(by)/a;
(其中0<=m<p,因为x是正整数)
有:
x=p-m,且by=n-ap+am
解得:
x=p-m,且y=(n-ap+am)/b
下面就是要证存在这个m,使y为正整数,也可以说是,找到正整数对(m,y)
由by=n-ap+am
得:
m=(by+ap-n)/a,而0=<m<p
所以有:
0=<(by+ap-n)/a<p,
解得:
(n-ap)/b=<y<n/b,
p是n的整数部分,就有n<2p=<ap(说明下:一个分数的整数部分是
肯定比分数部分大的,所以可得
n<2p)
于是n-ap<0,所以y最终的范围是(0,n/b),且y为正整数,可见:
确实存在这样的y,能使m为一在确定范围内的整数,反之,易知:
存在m,可使y=(by+ap-n)/a为整数。
好难的问题啊,我想了好久的。纯手打得阿,采纳以下阿
判断两个数是否互质的方法:
(1)1和任意大于1的自然数互质。
(2)2和任意奇数都是互质数。
(3)相邻的两个自然数都是互质数。
(4)相邻的两个奇数是互质数。
(5)不相同的两个质数是互质数。
(6)当一个数是合数,而另一个数是质数时(除了合数是质数的倍数的情况外),一般情况下这两个数也是互质数。24和7
2942是合数,但2942不是323的倍数。
323=1917
2942不是19和17的倍数
2942与323是互质的
以上就是关于求1到100内两个数互质的概率的c语言程序全部的内容,包括:求1到100内两个数互质的概率的c语言程序、急求vb程序设计 寻找互质数、有什么好方法能快速判断两个数是不是互质数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)