|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
嘿嘿,这个暑假我要多多刷题。
原题地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=22
难点:判断一个数时候为素数。
质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
这里用循环取余的方法。
- bool isPrime(int x)
- {
- if (x<=1) return false;
- for(int i=2;i<x;i++)
- if (x%i==0)
- return false;
- return true;
- }
复制代码
完整代码:
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- bool isPrime(int x)
- {
- if (x<=1) return false;
- for(int i=2;i<x;i++)
- if (x%i==0)
- return false;
- return true;
- }
- char *mystrlen(char *s)
- {
- int x=0;
- while (*s!=' ')
- {
- if(*s=='\0') return s;
- x++;
- s++;
- }
- return (char *)(unsigned int)s+(unsigned int)x;
- }
- int main()
- {
- int n;
- int *reason;
- scanf("%d",&n);
- reason = new int[n];
- for (int i=0;i<n;i++)
- {
- int n2;
- int Nums[10000];
- int sum1=0;
- scanf("%d",&n2);
- for (int j=0;j<n2;j++)
- {
- scanf("%d",&Nums[j]);
- if (isPrime(Nums[j]))
- sum1+=Nums[j];
- }
- reason[i] = sum1;
- }
- for (int i=0;i<n;i++)
- printf("%d\n",reason[i]);
- return 0;
- }
复制代码 |
|