N盏灯
#include<stdio.h>
int push(int i){
if(i==0)
return 1;
else
return 0;
}
main(){
int n;
printf("please input n:");
scanf("%d",&n);
int a[n]={0};
for(int i=2;i<=n;i++){
int j=i;
while(j<=n){
a[j-1]=push(a[j-1]);
j=j+i;
}
}
for(int i=0;i<n;i++){
if(a[i]==0)
printf("第%d盏灯是亮的\n",i+1);
}
}
求最大公因数和最小公倍数
最大公因数
辗转相除法
#include<stdio.h>
main(){
int x=18;
int y=12;
int temp;
while(x%y!=0){
temp=x%y;
x=y;
y=temp;
}
printf("%d",y);
}
最小公倍数
两个数的乘积除以最大公因数就是最小公倍数
求1-100的所有素数
#include<stdio.h>
main(){
int flag=1;
printf("2 ");
for(int i=3;i<=100;i++){
for(int j=2;j<i;j++){
if(i%j==0)
flag=0;
}
if(flag==1){
printf("%d ", i);
}
else
flag=1;
}
}
输入一个整数,依此显示该数的每一位
#include<stdio.h>
main(){
int number,digit;
scanf("%d",&number);
if(number<0)
number=number*-1;
while(number>0){
digit=number%10;
printf("%d\n",digit);
number/=10;
}
}
选择排序
N阶幻方
思路(罗伯法):
1 居上行正中央——数字 1 放在首行最中间的格子中
依次斜填切莫忘——向右上角斜行,依次填入数字
上出框界往下写——如果右上方向出了上边界,就以出框后的虚拟方格位置为基准,将数字竖直降落至底行对应的格子中
右出框时左边放——同上,向右出了边界,就以出框后的虚拟方格位置为基准,将数字平移至最左列对应的格子中
重复便在下格填——如果数字{N} 右上的格子已被其它数字占领,就将{N+1} 填写在{N}下面的格子中
右上重复一个样——如果朝右上角出界,和“重复”的情况做同样处理