然后直接相减看等不等于2就可以计数了。
#include<stdio.h>
bool IsPrime(int n)
int main(void)
{
int i, n, pn = 2, count = 0
scanf("%d", &n)
for (i = 3i <= ni++)
{
if (IsPrime(i))
{
if ((i - pn) == 2) count++
pn = i
}
}
printf("%d", count)
}
bool IsPrime(int n)
{
int i
if (n <2) return false
if (n == 2) return true
if (n % 2 == 0) return false
for (i = 2(i * i) <= ni++)
if (n % i == 0) return false
return true
}
验证了一下,100以内是8,1000以内是35,10000以内是205,100000以内是1224。
结果应该是对的,1000000秒出结果,应该也不会超时。
应该是二级C语言。关于PAT三个等级什么难度大致如下:
B(乙级):中文题,题目挺简单的,主要就考简单模拟、字符串处理、散列Hash、排序、二分、链表。
A(甲级):英文题,在乙级基础上加了数据结构,主要考线性数据结构、树、图论、最短路、深搜广搜、STL、并查集、简单DP、复杂模拟等。
T(顶级):英文题,就是ACM那些东西了。
乙级和甲级只要你把题库刷穿,90%的题能独立做出来,那么考满分八成不是问题。(一定要把题库刷完再去考)
如果你的目的是找工作,还是建议你考甲级吧,起码比乙级认可度高呀。
乙级真的是太容易了,而且要考就考100。另外英语真的不用愁,甲级顶级题目虽然都是英文,但其实很好读懂题,你不信去读读试试。
考完如果成绩好的话确实有企业联系你,但都是一些小单位或是创业公司,给你发邮件让去投简历,我也没投。(投的话应该可以直接面试)
代码如下:
#include <stdio.h>
struct Student{
char name[11]
char number[11]
int grade
}
int main(){
int n,i
struct Student *sds
scanf("%d",&n)
if(n<=0)return 1
sds = new struct Student[n]
if(NULL== sds)return 2
for(i = 0 i < n i++){
scanf("%s %s %d", sds[i].name, sds[i].number, &(sds[i].grade))
}
int min,max,minI,maxI
min=max=sds[0].grade
minI=maxI=0
for(i = 1 i < n i++){
if(sds[i].grade < min){
minI=i min= sds[i].grade
}
else if(sds[i].grade > max){
maxI=i max= sds[i].grade
}
}
printf("%s %s\n", sds[maxI].name, sds[maxI].number)
printf("%s %s\n", sds[minI].name, sds[minI].number)
delete[] sds
//getchar() getchar()
return 0
}
/*
读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
输入格式:每个测试输入包含1个测试用例,格式为
第1行:正整数n
第2行:第1个学生的姓名 学号 成绩
第3行:第2个学生的姓名 学号 成绩
... ... ...
第n+1行:第n个学生的姓名 学号 成绩
其中姓名和学号均为不超过10个字符的字符串,成绩为0到100之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。
输出格式:对每个测试用例输出2行,第1行是成绩最高学生的姓名和学号,第2行是成绩最低学生的姓名和学号,字符串间有1空格。
输入样例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
输出样例:
Mike CS991301
Joe Math990112
*/
其实上面的代码是PAT乙级的练习题,供参考。你的题目实在是太简单了。只有一句话……