C语言算法整理

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;

}

 

 

 

 

 

 

 

 


已标记关键词 清除标记
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页