关于#PAT#的问题,如何解决?

这个部分错误怎么改啊?
有参考平台上的答案 很多用的是数组。如果不用数组能优化这个代码吗?
谢谢各位

img

img

img

你看一眼,帮你手写了一份

#include<stdio.h>
#include<math.h>
int fun(int num)
{
    int i;
    for(i = 2;i < num;i ++)
    {
        if(num % i == 0)
        {
            return 0;
        }
     }
     return 1;
}
int main()
{
    int k,sum=0,n,m1,m2;
    scanf("%d", &n);
    for(k = 2;k <= n - 2;k ++)
    {
        m1 = fun(k);
        m2 = fun(k + 2);
    if( m1 == 1 && m2 == 1)
        sum ++;
    }
    printf("%d",sum);
    return 0;
}
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7752955
  • 这篇博客也不错, 你可以看下计算机为什么要以补码的形式存储数据?(原码、反码和补码)
  • 除此之外, 这篇博客: 什么是算术运算?什么是关系运算?什么是逻辑运算?中的 什么是算术运算?什么是关系运算?什么是逻辑运算? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 【答案解析】

    算术运算:

    • 算术运算即“四则运算”,是加法、减法、乘法、除法、乘方、开方等几种运算的统称。

    • 其中加减为一级运算,乘除为二级运算,乘方、开方为三级运算。在一道算式中,如果有多级运算存在,则应先进行高级运算,再进行低一级的运算。

    • C语言中的算熟运算符包括:+-*/++--% 等种类。

    • 如果只存在同级运算;则从左至右的顺序进行;如果算式中有括号,则应先算括号里边,再按上述规则进行计算。

    示例:$ (1 + 1)^{2} * 4+5 * 3$

    解析:

    1. 先进行括号内运算1+1,然后进行乘方运算得到结果4.
    2. 接下来与4相乘,得到结果16
    3. 因为乘法优先级大于加法,因此先进行5*3,得到结果15
    4. 最终相加得到结果31

    结果:31

    关系运算:

    • 关系的基本运算有两类:一类是传统的集合运算(并、差、交等),另一类是专门的关系运算(选择、投影、连接、除法、外连接等),而在C语言中,关系运算通常被认为是比较运算,将两个数值进行比较,判断比较结果是否符合给定的条件。

    • 常见的关系运算符包括:<<=>>===!= 等种类。

    • 其中,前4种关系运算符(<、<=、>、>= )的优先级别相同,后2种(==、!=)也相同。而前4种高于后2种。

    • 例如, > 优先于 == 。而 >< 优先级相同。 并且,关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符(=)。

    逻辑运算:

    • 在逻辑代数中,有与、或、非三种基本逻辑运算。表示逻辑运算的方法有多种,如语句描述、逻辑代数式、真值表、卡诺图等。而在C语言中,逻辑运算通常用于使用逻辑运算符将关系表达式或其它逻辑量连接起来组成逻辑表达式用来测试真假值。

    • 常见的逻辑运算符包括:&&||! 等种类

    • && 与是双目运算符,要求有两个运算对象,表示两个运算对象都成立,则结果为真,否则结果为假。

    例如:(a<b) && (x>y),表示(a<b)和(x>y)同时成立则为真。

    • ||:是双目运算符,要求有两个运算对象,表示两个运算对象只要任意一个成立,则结果为真,否则结果为假。

    • 例如:(a<b) && (x>y),表示(a<b)和(x>y)两个对象中任意一个成立则结果为真。

    • !:是单目运算符,只要求有一个运算对象,表示取运算对象反义,运算对象为真则结果为假,运算对象结果为假则结果为真。

    • 例如:!(a>b),表示(a>b)成立时结果为假,不成立时结果为真。

    • 若在一个逻辑表达式中包含多个逻辑运算符,则优先次序为: ! > && > ||。当然若一个逻辑表达式中包含括号括起来的子逻辑,则优先括号内的子逻辑判断。

    示例:

    • (1>2)||(2>3)&&(4>3) 结果为0 !(1>2)||(2>3)&&(4>3)结果为1

    • 注:&&优先级大于||,((2>3)&&(4>3))无法同时成立,则结果为假,然后与(1>2)结果进行逻辑或运算,两者都为假因此第一次结果为假。 而第二次!优先级最高,先对(1>2)的结果取逻辑非,得到结果为真,因此结果为真。

  • 您还可以看一下 千锋老师的什么是云计算? 课程中的 杨哥知识普及小课堂之 什么是云计算?小节, 巩固相关知识点