1.题目:判断101 - 200之间有多少个素数,并输出所有素数。
判断素数的方法:用一个数分别去除2到sqrt【平方差】(这个数),如果能被整除,则表明此数不是素数,反之是素数。
//题目:判断101 - 200之间有多少个素数,并输出所有素数。
//1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
//则表明此数不是素数,反之是素数。
#include<stdio.h>
#include<math.h>
int Isprime(int n) {
int i = 2;
for (i = 2; i < sqrt(n); i++) {
if (n% i == 0)
return 0;
}
return 1;
}
void main() {
int i;
for (i = 101; i <= 200; i++) {
if (Isprime(i))
{
printf("素数为%d\n", i);
}
}
}
2.题目:将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5
#include <stdio.h>
void main()
{
int n, i;
printf("请输入需要求解的正整数");
scanf("%d", &n);
printf("%d=", n);
for (i = 2; i <= n; i++)
{
while (n != i)
{
if (n % i == 0)
{
printf("%d*", i);
n = n / i;
}
else
break;
}
}
printf("%d\n", n);
}
3.题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
最大公约数最简单的方法:欧几里得算法
最小公倍数公式法:mxn/(m,n)最大公倍数
#include <stdio.h>
void main()
{
int num1, num2;//定义两个数
int temp;//用来存放输入的两个数的余数
int y;//用来存放两个数中较小的那个
int x;//用来存入两个数中较大的那一个数
printf("输入需要求的两个数,中间用空格间隔\n");
scanf("%d %d", &num1,&num2);
x = num1 > num2 ? num1 : num2;//比较两个数的大小
y = num1 + num2 - x;
while (y != 0) {
temp = x %y;
if (x % y == 0) {
printf("最大公约数%d\n",y);
break;
}
x = y;
y = temp;
}
printf("最小公倍数%d", (num1 * num2) / y);
}