1.判断一个数是不是素数
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main()
{
int i, n, k;
float n2;
scanf("%d", &n);
//n2相当于是根号n
n2 = sqrt(n);
k = 0;
for (i = 2; i <= n2; i++)
if (n % i == 0)
{
//利用break,一旦n对i取余=0,则直接跳出循环,输出No;优化了程序
k = 1;
break;
}
if (k == 0) printf("Yes"); else printf("No");
return 0;
}
2迭代
//1 1 2 3 5 8 13 21
int main()
{
int a, b, s, n, i;
n = 8;
//将a和b两个变量先初始化为1;
a = 1;
b = 1;
//所以循环刚刚开始时i要取3,如果i取1,则循环多进行了两次,输出就错误了
for (i = 3; i <= n; i++)
{
//将输出的数用s来表示,并在循环的每一轮将b的值赋给a,将s的值赋给b,从而实现迭代;
s = a + b;
a = b;
b = s;
}
printf("%d", s);
return 0;
}
3求任意两个数的最大公约数
int main()
{
int m, n,d;
scanf("%d%d", &m, &n);
//利用while循环,当n不等于0时循环继续
//原理表
/* m n m% n
25 15 10
15 10 5
10 5 0
5 0
输出m = 5, 即最大公约数
若n = 25, m = 15,只会使循环多进行一次,不影响结果*/
while (n)
{
d = m % n;
m = n;
n = d;
}
printf("%d", m);
return 0;
}
4//数组(小编还只是数组邻域的小白)
int main()
{
int a[5];
//表示向内存申请5个位置
a[0] = 23;
a[3] = 6;
//分别表示一号位和三号位存放了23和6;
//因为只申请了5个位置[]内的数不能大于等于5,否则将会出现数组越界,严重会使程序奔溃;
return 0;
}
5//数组和for循环联合使用,1求和
int main()
{
int a[100], n, i, s;
n = 5;
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
s = 0;
for (i = 0; i < n; i++)
s = s + a[i];
printf("%d", s);
return 0;
}
利用数组求最大值
int main()
{
int a[100], n, i, s, max, min;
n = 10;
for (i = 0; i < n; i++) scanf("%d", &a[i]);
s = 0;
for (i = 0; i < n; i++) s = s + a[i];
max = a[0];
for (i = 0; i < n; i++)
if (a[i] > max)
max = a[i];
printf("%d %d", s, max);
return 0;
}