c语言编程题目

2024-11-26 09:44:09
推荐回答(5个)
回答1:

给你下思路吧

第一个 素数算法不好 改用素数筛 没听说过的话 自己搜 很常用的算法


第二个 对于a先求个位数 然后按照你的算法求值 

如果还是超时的话

那么进行折半递归

类似于

int get_value(int a, int b)
{
    int t;
    if(b == 1) return a;
    t = get_value(a, b/2);
    if(b&1)return t*t*a%10;
    else return t*t%10;
}

int main()
{
    ....
    get_value(a%10, b);
}

回答2:

#include 

int cacu(int a,int b){ //此函数传入分子a和分母b,返回最大公约数
    int temp;
    while(b!=0)
    {
        temp=a%b;
        a=b;
        b=temp;
    }
    return a;
}

int main()
{
    int a, b;

    scanf("%d/%d", &a, &b);
    int c = cacu(a,b);
    a /= c;
    b /= c;
    printf("%d/%d\n", a, b);

    return 0;
}

回答3:

打表法求素数,速度快,不会超时。
#include
int main()
{
int a[10001],i,j,x,sum;
for (i=0;i<10001;i++) a[i]=1;

a[0]=0;a[1]=0;
for (i=2;i<10001;i++)
for (j=i;j<=10000/i;j++)
a[i*j]=0; /*打表*/

scanf("%d",&x);
while (x!=0)
{
sum=0;
for (i=2;i<=x/2;i++)
if ((a[i])&&(a[x-i])&&(i!=(x-i))) sum++;
printf("%d\n",sum);
scanf("%d",&x);
}
}
第二题找规律即可
0 | 只能是0
1 | 只能是1
2 | 2 4 8 6
3 | 3 9 7 1
4 | 4 6
5 | 只能是5
6 | 只能是6
7 | 7 9 3 1
8 | 8 4 2 6
9 | 9 1

回答4:

#include
int main()
{
int a[10],i,n,t;
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
scanf("%d",&t);
for(i=n-1;i>=0&&ta[i+1]=a[i];
a[i+1]=t;
for(i=0;iprintf("%d ",a[i]);
printf("%d\n",a[n]);
return 0;
}

回答5:

#include
#include
int main()
{int a,b,i;
scanf("%d/%d",&a,&b);
for(i=2;i<=a;i++){
if(a%i==0&&b%i==0){
a=a/i;
b=b/i;
i=1;
}
}
printf("%d/%d",a,b);
return 0;
}