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;
}