题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb
输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
输入输出格式
输入描述:
输入有多组数据。
每组一行,输入n。
输出描述:
输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数(素数之间用空格隔开,最后一个素数后面没有空格),如果没有则输出-1。
输入输出样例
输入样例: 100
输出样例: 11 31 41 61 71
C语言程序代码
#include <stdio.h>
//输入一个整数n(2<=n<=10000),要
//求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
int isPrime(int num){
int j;
for(j = 2; j < num; j++){
if(j != num-1 && num % j != 0){//一次循环满足条件 ,继续循环
continue;
}else if(j == num-1 && num % j != 0){//循环到该数字的前一个数也满足条件
return num;
}else{
return -1;
}
}
}
int main(){
int i, num;
scanf("%d", &num);
if(num < 11){
printf("-1");
}
i = 11;
while(i <= num){
//判断其是否为素数
int res = isPrime(i);
if(res != -1){
if(res == 11){
printf("%d", res);
}else{
printf(" %d", res);
}
}
i += 10;
}
return 0;
}
Java程序代码
/**
* 输入一个整数n(2<=n<=10000),要求输出所有从1到这个整数之间(不包括1和这个整数)个位为1的素数,如果没有则输出-1。
* 输入:100
* 输出:11 31 41 61 71
*/
public class GetPrime {
public static void main(String[] args) {
int i, num;
Scanner scanner = new Scanner(System.in);
num = scanner.nextInt();
//如果没有输出-1
if (num < 11){
System.out.println(-1);
}
//num满足条件
i = 11;
while (i <= num){
//判断i是否为素数
for (int j = 2; j < i; j++){
if (i % j != 0){
if (j != i -1)
continue;
else{
if (i == 11)
System.out.print(i);
else
System.out.print(" "+ i);
}
}else{
break;
}
}
i += 10;
}
}
}
Python程序设计
# 定义函数求素数
def isPrime(num):
j = 2
while j < num:
if num % j != 0: # 素数取余除了1和本身都不为零
if j != num-1:
j += 1
continue
else:
return num
else:
return -1
if __name__ == '__main__':
i = 11
numStr = input()
number = eval(numStr)
if number < i:
print(-1)
while number >= i:
res = isPrime(i)
if res != -1:
if res == 11:
print(res, end='')
else:
print(" %d" % res, end="")
i+=10
结果测试