C 语言教程 在线

1610c-examples-factors-number

寻找两数的所有公因数:

#include <stdio.h>

int main()
{
    int num1, num2, i;
    printf("输入两个数,使用空格分隔:");
    scanf("%d %d", &num1, &num2);
    for (i = 1; i <= (num1 > num2 ? num2 : num1) ; ++i)
    {
        if (num1%i == 0 && num2%i == 0)
        {
            printf("%d ", i);
        }
    }
    return 0;
}

1609c-examples-check-armstrong-number

参考方法:

#include<stdio.h>
long long power(long long x,int y)
{
    long long sum = 1;
    while(y--)
    {
        sum *= x;
    }
    return sum;
}

int check_arm(long long n)
{
    long long temp,sum = 0,remainder,count = 0;
    temp = n;
    while(temp*10/10 != 0)
    {
        temp /= 10;
        ++count;
    }
    temp = n;
    while(temp*10/10 != 0)
    {
        sum += power(temp%10,count);
        temp /= 10;
    }
    if(n == sum)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
int main()
{
    long long temp,n,result,a,b,i;
    int flag;
    printf("Please enter a number:\n");
    scanf("%lld",&n);
    result = check_arm(n);
    if(result == 1)
    {
        printf("Yes, it's an Armstrong number.\n\n");
    }
    else
    {
        printf("No, it isn't an Armstrong number.\n\n");
    }
    printf("Please enter two numbers as an interregional,seperated by a space.\n");
    scanf("%lld %lld",&a,&b);
    flag = 1;
    if(a == b)
    {
        printf("That is no an valid interregional.\n");
        flag = 0;
    }
    else if(a > b)
    {
        temp = a;
        a = b;
        b = temp;
    }
    if(flag == 1)
    {
        printf("Armstrong number(s) between %lld and %lld is(are):\n",a,b);
        for(i = a;i<=b;i++)
        {
            if(check_arm(i) == 1)
            {
                printf("%lld ",i);
            }
        }
    }
    return 0;
}

1608c-examples-prime-number

可以考虑用sqrt降低时间复杂度

#include<stdio.h>
#include<math.h>
int issushu(int k);
int main(){
    int n,count=0;
    scanf("%d",&n);
    for(int i=n;i>3;i--)
        if(issushu(i))
            if(issushu(i-2))
                count++;
    printf("%d",count);
    return 0;
}

int issushu(int k){
    for(int i=2;i<sqrt(k)+1;i++){
        if(k%i==0)
        return 0;
    }
    return 1;
}

1607c-examples-palindrome-number

参考方法:

#include <stdio.h>
#include<string.h>

int main()
{
    int a=12021;
    char s[10]={'\0'},s1[10]={'\0'};
    sprintf(s,"%d",a); // 将整数转换为字符串
    int n=strlen(s);
    int j=0;
    for(int i=n-1;i>=0;i--)
    {
        s1[j++]=s[i];
    }
    //s[j]='\0';
    printf("%s %s\n",s,s1);
    if(!strcmp(s,s1))
        printf("整数%d是回文串",a);
    else
        printf("整数%d不是回文串",a);
    return 0;
}

1606c-examples-power-number

参考方法:

#include<stdio.h>

int main()
{
    int i,a,b;
    unsigned long c=1;
    printf("请输入基数:");
    scanf("%d",&a);
    printf("请输入指数");
    scanf("%d",&b);
    for(i=1;i<=b;i++)
    {
        c *= a;
    }
    printf("%lu",c);
    return 0;
}