请教c语言编程题目
答案:2 悬赏:30 手机版
解决时间 2021-11-09 15:54
- 提问者网友:像風在裏
- 2021-11-08 19:24
请教c语言编程题目
最佳答案
- 五星知识达人网友:舍身薄凉客
- 2021-11-08 20:06
打表法求素数,速度快,不会超时。
#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
#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
全部回答
- 1楼网友:慢性怪人
- 2021-11-08 20:44
给你下思路吧
第一个 素数算法不好 改用素数筛 没听说过的话 自己搜 很常用的算法
第二个 对于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);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯