1.求素数和判断素数
方法一:.筛选法求素数
#include<stdio.h>
void main()
{
int a[101],i,j;
for(i=0;i<=100;i++)
a[i]=1;
for(i=2;i<=100;i++)
{
for(j=i+1;j<=100;j++)
if(j%i==0)
a[j]=0;
}
for(i=0;i<=100;i++)
if(a[i]==1)
printf("%d ",i);
}方法二:根式求素数(时间复杂度小)
#include<stdio.h>
#include<math.h>
int main()
{
int i,j;
for(i=2;i<=100;i++)
{
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
break;
}
if(j>sqrt(i))
{
printf("%d ",i);
}
}
return 0;
}
判断素数:
#include<stdio.h>
void main()
{
int num,i;
printf("input number:");
scanf("%d",&num);
for(i=2;i<num;i++)
{
if(num%i==0)
printf("%d is no prime\n",num);
break;
}
if(i==num)
printf("%d is prime\n",num);
}
2.冒泡排序(包括插入一个数,删除一个数):
只进行排序:
插入一个数排序:
#include<stdio.h>
void main()
{
int a[9],i,j,t,num;
printf("input 8 nums:");
for(i=0;i<8;i++)
scanf("%d",&a[i]);
for(i=0;i<7;i++)
{
for(j=0;j<7-i;j++)
if(a[j]>a[j+1])
{
t=a[j];a[j]=a[j+1];a[j+1]=t;
}
}
printf("input a num:");
scanf("%d",&num);
for(i=0;i<8;i++)
{
if(num<a[i])
{
for(j=8;j>i;j--)
a[j]=a[j-1];
a[j]=num;
break;
}
}
printf("插入之后排序为:\n");
for(i=0;i<9;i++)
printf("%d ",a[i]);
}
判断一个数的位数:
#include <stdio.h>
void main()
{
while(1)
{
float num;
int i=0,fz;
printf("input number:");
scanf("%d",&num);
fz=num;
while(num!=0)
{
num=num/10;
i++;
}
printf("%d ,%d",fz,i);
}
}
随机输出十个数:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int arr[10],i;
srand(time(NULL));
for(i=0;i<10;i++)
{
arr[i]=rand()%10+1;
printf("%d ",arr[i]);
}
return 0;//输入十个随机数
}
循环倒叙:(直接是数字转换成倒序,不用数组)
#include<stdio.h>
void main()
{
int num,r;
printf("input 1 num:\n");
scanf("%d",&num);
while(num>0)
{
r=num%10;//取个位数
num=num/10;//缩小十倍
printf("%d",r);
}
}
分解质因数:
#include<stdio.h>
void main()
{
int n,i;
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);
}
约瑟夫环问题:(数到3枪毙)
#include<stdio.h>
int main()
{
int a[9]={0},i,j,k=0,num=1;
while(num<9)
{
for(i=1;i<9;i++)
{
if(a[i]=0)
{
k++;
if(k==3)
{
printf("%d\n",i);
a[i]=1;
k=0;
num++;
}
}
}
}
}
最小公倍数和最大公约数:
#include<stdio.h>
int main()
{
int n,m,a,b,t;
printf("input 2 num:");
scanf("%d%d",&m,&n);
if(m<n)
{
t=m;m=n;n=t;
}
a=m;b=n;
while(b!=0)
{
t=a%b;
a=b;
b=t;
}
printf("公约数是:%d\n",a);
printf("最小公倍数:%d\n",m*n/a);
return 0;
}
打印1000以内的完数,并输出因子:
#include<stdio.h>
int main()
{
int i,j;
for(i=1;i<=1000;i++)
{ int s=0;
for(j=1;j<i;j++)
{
if(i%j==0)
{
s+=j;
}
} if(s==i)
{
printf("%d的因子为:",i);
for(j=1;j<i;j++)
{
if(i%j==0)
{
printf("%d ",j);
}
} printf("\n");
}
}
return 0;
}
大小写字母转换:
#include<stdio.h>
int main()
{
char c[100];
int i;
gets(c);
int len=strlen(c);
for(i=0;i<=len;i++)
{
printf("%c",c[i]-32);
}
return 0;
}