gpt4 book ai didi

c - 我在 Codechef Primary 上写了我的代码

转载 作者:行者123 更新时间:2023-11-30 20:31:19 27 4
gpt4 key购买 nike

当我输入 1 3 4 时,我的代码遇到了问题。虽然我找不到任何错误,因为它与其他数字/ps 完美配合。它是为了解决 codechef 问题而构建的 POTATOES

Problem summary: Write a program that inputs an integer T followed by T lines containing two space-separated positive integers. For each of these lines, output the smallest number (>1) that, when added to the sum of these two numbers, results in a sum that is a prime number.

我的代码是

#include<stdio.h>
#include<math.h>
int prime(int a,int b);

int main() {
int c;
scanf("%d",&c);
int a,b,d[c];

for(a=0; a<c; a++) {
int x,y;
scanf("%d %d",&x,&y);
b=(x+y);
if(prime(x,y)-b!=0)
d[a]=prime(x,y)-b;
else d[a]=prime((x+1),y)-b;
}
for(a=0; a<c; a++)printf("%d\n",d[a]);

return 0;
}

int prime(int a,int b) {
int c,e;
for(c=2; c<(a+b); c++) {
if((a+b)%c==0) {
b++;
continue;
}
return(a+b);
}
}

最佳答案

你的代码是错误的。在您的函数 prime() 中,由于语句 b++;(a+b)(a+b) 中发生变化%c 但递增的 c 永远不会返回。因此,对于更大的素数,您的代码将失败

例如:- (89,1) (79,1) 等

此外,您的代码中不需要 d[c] 。您不需要存储每个输出。当您计算一个输出时,只需将其打印出来。使用 code-chef 就可以了。您也可以将问题划分为函数。

尝试这个简化的代码:-

#include <stdio.h>
#include <math.h>
int prime(int n);
int make_prime(int a);

int main()
{
int c;
scanf("%d", &c);
int a, b;

for (a = 0; a < c; a++)
{
int x, y;
scanf("%d %d", &x, &y);
b = (x + y);

printf("%d\n", make_prime(b));

}

return 0;
}

int make_prime(int a)
{
int c=1;
while(prime(a+c)==0){
c++;
}
return c;
}

int prime(int n){ // simple prime function

int i,flag=1;
for (i = 2; i <= (n)/2; i++)
{
if ((n) % i == 0)
{
flag=0;
break;
}
}
return flag;
}

关于c - 我在 Codechef Primary 上写了我的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51496263/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com