程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 1501131824-藍橋杯-算法訓練 Torry的困惑(基本型)

1501131824-藍橋杯-算法訓練 Torry的困惑(基本型)

編輯:C++入門知識

1501131824-藍橋杯-算法訓練 Torry的困惑(基本型)


算法訓練 Torry的困惑(基本型) 時間限制:1.0s 內存限制:512.0MB 問題描述   Torry從小喜愛數學。一天,老師告訴他,像2、3、5、7……這樣的數叫做質數。Torry突然想到一個問題,前10、100、1000、10000……個質數的乘積是多少呢?他把這個問題告訴老師。老師愣住了,一時回答不出來。於是Torry求助於會編程的你,請你算出前n個質數的乘積。不過,考慮到你才接觸編程不久,Torry只要你算出這個數模上50000的值。 輸入格式   僅包含一個正整數n,其中n<=100000。 輸出格式   輸出一行,即前n個質數的乘積模50000的值。 樣例輸入 1 樣例輸出 2 解題思路 因為不知道第100000個質數是多少,所以可以先用較大的數n當結束,進行打表求0--n直接的質數,然後從0開始判斷如果是質數就相乘並j++,可以先輸入100000來判斷到哪個數就截止了,然後再修改程序的n。 注意answer需要用到64位int型。 這題還考察了同余定理。 C代碼
#include
#include
int a[11000000],b[110000];
int main()
{
	int n;
	int i,j,k;
	__int64 answer;
	scanf("%d",&n);
	memset(a,0,sizeof(a));
	a[0]=a[1]=1;
	for(i=0;i<10000000;i++)
	{
		if(a[i])
		    continue;
		for(j=i+i;j<10000000;j+=i)
		    a[j]=1;
	}
	answer=1;
	for(i=0,j=0;i<10000000&&j
JAVA代碼
package torry的困惑;
import java.util.Scanner;
public class Main
{
	public static void main(String[] args)
	{
		Scanner input=new Scanner(System.in);
		int[] a=new int[1100000];
		int[] b=new int[110000];
		int n=input.nextInt();
		int i,j,k;
		long answer;
		a[0]=a[1]=1;
		for(i=0;i<1000000;i++)
		{
			if(a[i]==1)
				continue;
			for(j=i+i;j<1000000;j+=i)
				a[j]=1;
		}
		answer=1;
		for(i=0,j=0;i<1000000&&j

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved