请问这几个c语言编程题怎么写
发布网友
发布时间:2023-09-17 03:25
我来回答
共1个回答
热心网友
时间:2024-12-05 00:11
#include <stdio.h>
#include <math.h>
int isPrime(int n) {
int i;
if (n==2) return 1; //2是素数
if (n<=1 || n%2==0) return 0; //<1或是偶数,不是素数
for (i=3;i<=sqrt(n);i+=2) { //只判断能整数奇数情况就可以
if (n%i==0)
return 0;
}
return 1;
}
/**
* 使用了Stein算法
*/
int stein (int m, int n) {
int c=1, t;
while (m!=0 && n!=0) {
if (m%2==0 && n%2==0) {
m>>=1;
n>>=1;
c<<=1;
} else if (m%2==0 && n%2==1) {
m>>=1;
} else if (m%2==1 && n%2==0) {
n>>=1;
} else {
t = m>n?n:m;
m=(m-n>0)?(m-n):(n-m);
n = t;
}
}
if (m==0) c *= n;
if (n==0) c *= m;
return c;
}
int lcm(int m, int n, int *) {
return m/* * n;
}
int main() {
//第1题
int m, n, i;
printf("输入5个整数:");
for (i=0;i<5;i++) {
scanf("%d", &n);
if (isPrime(n)) {
printf("%9d 是素数\n", n);
} else {
printf("%9d 不是素数\n", n);
}
}
//第2题 只实现了第1种方法第2种自已改吧。
printf("输入2个整数:");
scanf("%d %d", &m, &n);
int g = stein(m, n);
int l = lcm(m, n, g);
printf("最大公约数=%d, 最小公倍数=%d\n", g, l);
return 0;
}